* routine. q.v. */
#define ADD_POSIX_WARNING(p, text) STMT_START { \
if (posix_warnings) { \
- if (! warn_text) warn_text = newAV(); \
+ if (! warn_text) warn_text = (AV *) sv_2mortal((SV *) newAV()); \
av_push(warn_text, Perl_newSVpvf(aTHX_ \
WARNING_PREFIX \
text \
}
if (warn_text) {
- if (posix_warnings) {
- /* mortalize to avoid a leak with FATAL warnings */
- *posix_warnings = (AV *) sv_2mortal((SV *) warn_text);
- }
- else {
- SvREFCNT_dec_NN(warn_text);
- }
+ /* warn_text should only be true if posix_warnings is true */
+ assert(posix_warnings);
+ *posix_warnings = warn_text;
}
}
else if (class_number != OOB_NAMEDCLASS) {