>From c62c3e47cea5c3945fde58e858c78ae1334192cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20Sch=C3=B6nfeld?= Date: Tue, 24 Sep 2013 19:56:05 +0200 Subject: [PATCH] Avoid misusing PL_na We used to do "newSVpv (string, PL_na)" when we didn't know the string's length. That's not correct, and breaks if other XS modules write to PL_na, which is what PL_na is intended for. Simply use "newSVpv (string, 0)" instead. --- GOption.xs | 2 +- GType.xs | 2 +- Glib.xs | 2 +- NEWS | 8 ++++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/GOption.xs b/GOption.xs index c20cbb4..0c7defe 100644 --- a/GOption.xs +++ b/GOption.xs @@ -547,7 +547,7 @@ sv_from_filenames (gchar **filenames) av = newAV (); for (i = 0; filenames[i] != NULL; i++) { /* FIXME: Is this the correct converter? */ - av_push (av, newSVpv (filenames[i], PL_na)); + av_push (av, newSVpv (filenames[i], 0)); } return newRV_noinc ((SV *) av); diff --git a/GType.xs b/GType.xs index d59ee18..6f9c1dd 100644 --- a/GType.xs +++ b/GType.xs @@ -1505,7 +1505,7 @@ install_overrides (GType type) PUSHMARK (SP); if (!name) name = gperl_object_package_from_type (type); - XPUSHs (sv_2mortal (newSVpv (name, PL_na))); + XPUSHs (sv_2mortal (newSVpv (name, 0))); PUTBACK; call_sv ((SV *)GvCV (*slot), G_VOID|G_DISCARD); FREETMPS; diff --git a/Glib.xs b/Glib.xs index dac2c47..a709050 100644 --- a/Glib.xs +++ b/Glib.xs @@ -285,7 +285,7 @@ gperl_argv_update (GPerlArgv *pargv) SV *sv; const char *arg = pargv->argv[i]; gboolean utf8_flag = !!g_hash_table_lookup (priv->utf8_flags, arg); - sv = newSVpv (arg, PL_na); + sv = newSVpv (arg, 0); if (utf8_flag) SvUTF8_on (sv); av_push (ARGV, sv); diff --git a/NEWS b/NEWS index 28a0855..379d957 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,11 @@ +Overview of changes in Glib +========================================== + +* Avoid misusing the macro PL_na, thus preventing issues when Glib is used in + conjunction with certain XS modules, among them XML::Parser and + String::Approx. +* Avoid memory corruption when registering boxed synonyms repeatedly. + Overview of changes in Glib 1.301 (stable) ========================================== -- 1.8.1.2