On 4 January 2017 at 13:27, Rainer Jung <rainer.j...@kippdata.de> wrote:
> Hi there,
>
> this commit broke compatibility for mod_perl 2.0.10 with perl before version
> 5.14. AFAIK API function mg_free_type() used here was only introduced in
> 5.14.0. Since the above commit was titled "Add support for Perl 5.22.x.", it
> might be possible to fix this using a version dependent code path. But I
> don't know enough about these internals to suggest an appropriate patch,
> sorry.
>

Thanks for the report.

Are you in a position to try the attached patch, which I think should
be sufficient to fix it? (mg_free() removes magic of all types, but I
wouldn't expect any magic other than the type targetted by the
mg_free_type() call to be present anyway.)

If not then I'll build a 5.14 and try it myself, but I don't have one
to hand at the moment.
Index: src/modules/perl/modperl_env.c
===================================================================
--- src/modules/perl/modperl_env.c	(revision 1777309)
+++ src/modules/perl/modperl_env.c	(working copy)
@@ -670,7 +670,11 @@
                mg->mg_ptr, mg->mg_obj, mg->mg_flags);
 
     /* Remove it */
+#if MP_PERL_VERSION_AT_LEAST(5, 13, 6)
     mg_free_type((SV*)ENVHV, PERL_MAGIC_env);
+#else
+    mg_free((SV*)ENVHV);
+#endif
 
     /* Add our version instead */
     mg = sv_magicext((SV*)ENVHV, (SV*)NULL, PERL_MAGIC_env, &MP_vtbl_env, (char*)NULL, 0);
@@ -699,7 +703,11 @@
                mg->mg_ptr, mg->mg_obj, mg->mg_flags);
 
     /* Remove it */
+#if MP_PERL_VERSION_AT_LEAST(5, 13, 6)
     mg_free_type((SV*)ENVHV, PERL_MAGIC_env);
+#else
+    mg_free((SV*)ENVHV);
+#endif
 
     /* Restore perl's original version */
     sv_magicext((SV*)ENVHV, (SV*)NULL, PERL_MAGIC_env, &PL_vtbl_env, (char*)NULL, 0);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org

Reply via email to