From: oetiker Date: Tue, 31 Jul 2012 12:43:45 +0000 (+0000) Subject: RRDs.xs uses &PL_sv_undef to insert undefined values into arrays and hashes. This... X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=4c0984ad7361fd41c1261dff35296be1470f3624;p=rrdtool-all.git RRDs.xs uses &PL_sv_undef to insert undefined values into arrays and hashes. This leads to all sorts of problems. For details, please see "AVs, HVs and undefined values" section in perlguts(1). -- patch by tobez+lars git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.3@2296 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/program/bindings/perl-shared/RRDs.xs b/program/bindings/perl-shared/RRDs.xs index 25d44a51..e1917a8c 100644 --- a/program/bindings/perl-shared/RRDs.xs +++ b/program/bindings/perl-shared/RRDs.xs @@ -85,7 +85,7 @@ extern "C" { switch (data->type) { \ case RD_I_VAL: \ if (isnan(data->value.u_val)) \ - hvs(&PL_sv_undef); \ + hvs(newSV(0)); \ else \ hvs(newSVnv(data->value.u_val)); \ break; \ @@ -286,7 +286,7 @@ rrd_fetch(...) for (i = start+step; i <= end; i += step){ line = newAV(); for (ii = 0; ii < ds_cnt; ii++){ - av_push(line,(isnan(*datai) ? &PL_sv_undef : newSVnv(*datai))); + av_push(line,(isnan(*datai) ? newSV(0) : newSVnv(*datai))); datai++; } av_push(retar,newRV_noinc((SV*)line)); @@ -366,7 +366,7 @@ rrd_xport(...) for (i = start+step; i <= end; i += step){ line = newAV(); for (ii = 0; ii < col_cnt; ii++){ - av_push(line,(isnan(*ptr) ? &PL_sv_undef : newSVnv(*ptr))); + av_push(line,(isnan(*ptr) ? newSV(0) : newSVnv(*ptr))); ptr++; } av_push(retar,newRV_noinc((SV*)line));