From b0a526a0bcba4a883645db7c228f905c3906be77 Mon Sep 17 00:00:00 2001 From: oetiker Date: Tue, 31 Jul 2012 12:43:45 +0000 Subject: [PATCH] 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/trunk/program@2296 a5681a0c-68f1-0310-ab6d-d61299d08faa --- bindings/perl-shared/RRDs.xs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bindings/perl-shared/RRDs.xs b/bindings/perl-shared/RRDs.xs index 252018f..830a779 100644 --- a/bindings/perl-shared/RRDs.xs +++ b/bindings/perl-shared/RRDs.xs @@ -81,7 +81,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; \ @@ -276,7 +276,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)); @@ -356,7 +356,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)); -- 2.11.0