Mailing List Archive

svn commit: r1670740 - /perl/modperl/trunk/src/modules/perl/modperl_perl_includes.h
Author: stevehay
Date: Wed Apr 1 17:40:08 2015
New Revision: 1670740

URL: http://svn.apache.org/r1670740
Log:
Fix compilation failure in some configurations under Perl 5.21.1 and above

The problem is that mod_perl overrides Perl's definition of dNOOP with one that uses the same symbol in an incompatible way. Failures start with Perl 5.21.1 because this version introduced some inline function definitions that can end up using dNOOP internally. The core inline.h is processed too early for mod_perl's override, so functions defined there and functions defined in mod_perl end up using different versions of dNOOP, exposing the incompatibility.

Presumably mod_perl is trying to avoid the warnings that one used to get with Perl 5.6. That was fixed a long time ago, so mod_perl no longer needs an override. However, since README notes that mod_perl *MAY* still work with Perls older than 5.8.2 it is probably worth keeping the override and avoiding the clash of dNOOP definitions by using a different symbol.

Patch by Zefram <zefram@fysh.org> from rt.cpan.org #101144.

Modified:
perl/modperl/trunk/src/modules/perl/modperl_perl_includes.h

Modified: perl/modperl/trunk/src/modules/perl/modperl_perl_includes.h
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/src/modules/perl/modperl_perl_includes.h?rev=1670740&r1=1670739&r2=1670740&view=diff
==============================================================================
--- perl/modperl/trunk/src/modules/perl/modperl_perl_includes.h (original)
+++ perl/modperl/trunk/src/modules/perl/modperl_perl_includes.h Wed Apr 1 17:40:08 2015
@@ -79,7 +79,7 @@
/* avoiding -Wall warning */

#undef dNOOP
-#define dNOOP extern int __attribute__ ((unused)) Perl___notused
+#define dNOOP extern int __attribute__ ((unused)) Perl___notused___modperl

#ifndef G_METHOD
# define G_METHOD 64