Silence ParseXS warning about abusing the CODE section
authorSteffen Mueller <smueller@cpan.org>
Mon, 13 Aug 2012 08:29:39 +0000 (10:29 +0200)
committerSteffen Mueller <smueller@cpan.org>
Fri, 31 Aug 2012 11:47:17 +0000 (13:47 +0200)
See RT #114198. DynaLoader was warning about somewhat dubious use of
RETVAL with a CODE section but without an OUTPUT section. This fixes
that problem, but I have obviously not been able to test on all affected
operating systems.

ext/DynaLoader/DynaLoader_pm.PL
ext/DynaLoader/dl_aix.xs
ext/DynaLoader/dl_dllload.xs
ext/DynaLoader/dl_hpux.xs
ext/DynaLoader/dl_mpeix.xs
ext/DynaLoader/dl_next.xs
ext/DynaLoader/dl_vmesa.xs
ext/DynaLoader/dl_win32.xs

index ad056c8..8622a6a 100644 (file)
@@ -85,7 +85,7 @@ package DynaLoader;
 # Tim.Bunce@ig.co.uk, August 1994
 
 BEGIN {
-    $VERSION = '1.15';
+    $VERSION = '1.16';
 }
 
 use Config;
index 6d24428..8fa7d1e 100644 (file)
@@ -688,21 +688,24 @@ BOOT:
     (void)dl_private_init(aTHX);
 
 
-void *
+void
 dl_load_file(filename, flags=0)
        char *  filename
        int     flags
-       CODE:
+        PREINIT:
+        void *retv;
+       PPCODE:
        DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags));
        if (flags & 0x01)
            Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
-       RETVAL = dlopen(filename, RTLD_GLOBAL|RTLD_LAZY) ;
-       DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL));
+       retv = dlopen(filename, RTLD_GLOBAL|RTLD_LAZY) ;
+       DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", retv));
        ST(0) = sv_newmortal() ;
-       if (RETVAL == NULL)
+       if (retv == NULL)
            SaveError(aTHX_ "%s",dlerror()) ;
        else
-           sv_setiv( ST(0), PTR2IV(RETVAL) );
+           sv_setiv( ST(0), PTR2IV(retv) );
+        XSRETURN(1);
 
 int
 dl_unload_file(libref)
@@ -716,25 +719,27 @@ dl_unload_file(libref)
   OUTPUT:
     RETVAL
 
-void *
+void
 dl_find_symbol(libhandle, symbolname)
        void *          libhandle
        char *          symbolname
-       CODE:
+       PREINIT:
+        void *retv;
+        CODE:
        DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_find_symbol(handle=%x, symbol=%s)\n",
                libhandle, symbolname));
-       RETVAL = dlsym(libhandle, symbolname);
-       DLDEBUG(2,PerlIO_printf(Perl_debug_log, "  symbolref = %x\n", RETVAL));
+       retv = dlsym(libhandle, symbolname);
+       DLDEBUG(2,PerlIO_printf(Perl_debug_log, "  symbolref = %x\n", retv));
        ST(0) = sv_newmortal() ;
-       if (RETVAL == NULL)
+       if (retv == NULL)
            SaveError(aTHX_ "%s",dlerror()) ;
        else
-           sv_setiv( ST(0), PTR2IV(RETVAL));
+           sv_setiv( ST(0), PTR2IV(retv));
 
 
 void
 dl_undef_symbols()
-       PPCODE:
+       CODE:
 
 
 
index 9d5b2c2..9a1069e 100644 (file)
@@ -105,24 +105,24 @@ BOOT:
     (void)dl_private_init(aTHX);
 
 
-void *
+void
 dl_load_file(filename, flags=0)
     char *     filename
     int                flags
   PREINIT:
     int mode = 0;
-  CODE:
-{
+    void *retv;
+  PPCODE:
     DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags));
     /* add a (void *) dllload(filename) ; cast if needed */
-    RETVAL = dllload(filename) ;
-    DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) RETVAL));
+    retv = dllload(filename) ;
+    DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) retv));
     ST(0) = sv_newmortal() ;
-    if (RETVAL == NULL)
+    if (retv == NULL)
        SaveError(aTHX_ "%s",strerror(errno)) ;
     else
-       sv_setiv( ST(0), PTR2IV(RETVAL));
-}
+       sv_setiv( ST(0), PTR2IV(retv));
+    XSRETURN(1);
 
 
 int
@@ -139,28 +139,31 @@ dl_unload_file(libref)
     RETVAL
 
 
-void *
+void
 dl_find_symbol(libhandle, symbolname)
     void *     libhandle
     char *     symbolname
-    CODE:
+    PREINIT:
+    void *retv;
+    PPCODE:
     DLDEBUG(2, PerlIO_printf(Perl_debug_log,
                             "dl_find_symbol(handle=%lx, symbol=%s)\n",
                             (unsigned long) libhandle, symbolname));
-    if((RETVAL = (void*)dllqueryfn(libhandle, symbolname)) == NULL)
-    RETVAL = dllqueryvar(libhandle, symbolname);
+    if((retv = (void*)dllqueryfn(libhandle, symbolname)) == NULL)
+    retv  = dllqueryvar(libhandle, symbolname);
     DLDEBUG(2, PerlIO_printf(Perl_debug_log,
-                            "  symbolref = %lx\n", (unsigned long) RETVAL));
+                            "  symbolref = %lx\n", (unsigned long) retv));
     ST(0) = sv_newmortal() ;
-    if (RETVAL == NULL)
+    if (retv == NULL)
        SaveError(aTHX_ "%s",strerror(errno)) ;
     else
-       sv_setiv( ST(0), PTR2IV(RETVAL));
+       sv_setiv( ST(0), PTR2IV(retv));
+    XSRETURN(1);
 
 
 void
 dl_undef_symbols()
-    PPCODE:
+    CODE:
 
 
 
@@ -171,13 +174,14 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     char *             perl_name
     void *             symref 
     const char *       filename
-    CODE:
+    PPCODE:
     DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%lx)\n",
                perl_name, (unsigned long) symref));
     ST(0) = sv_2mortal(newRV((SV*)newXS_flags(perl_name,
                                              (void(*)(pTHX_ CV *))symref,
                                              filename, NULL,
                                              XS_DYNAMIC_FILENAME)));
+    XSRETURN(1);
 
 
 char *
index 583cfc2..2cd6790 100644 (file)
@@ -51,7 +51,7 @@ BOOT:
     (void)dl_private_init(aTHX);
 
 
-void *
+void
 dl_load_file(filename, flags=0)
     char *     filename
     int                flags
@@ -115,7 +115,7 @@ dl_unload_file(libref)
     RETVAL
 
 
-void *
+void
 dl_find_symbol(libhandle, symbolname)
     void *     libhandle
     char *     symbolname
@@ -150,7 +150,7 @@ dl_find_symbol(libhandle, symbolname)
 
 void
 dl_undef_symbols()
-    PPCODE:
+    CODE:
 
 
 
index 0c810ad..be75698 100644 (file)
@@ -42,7 +42,7 @@ MODULE = DynaLoader     PACKAGE = DynaLoader
 BOOT:
     (void)dl_private_init(aTHX);
 
-void *
+void
 dl_load_file(filename, flags=0)
     char *      filename
     int         flags
@@ -74,7 +74,7 @@ flags));
     else
         sv_setiv( ST(0), PTR2IV(obj) );
 
-void *
+void
 dl_find_symbol(libhandle, symbolname)
     void *      libhandle
     char *      symbolname
@@ -103,7 +103,7 @@ dl_find_symbol(libhandle, symbolname)
 
 void
 dl_undef_symbols()
-    PPCODE:
+    CODE:
 
 # These functions should not need changing on any platform:
 
index e5774c0..a15efa8 100644 (file)
@@ -251,29 +251,32 @@ BOOT:
 
 
 
-void *
+void
 dl_load_file(filename, flags=0)
     char *     filename
     int                flags
     PREINIT:
     int mode = 1;
+    void *retv;
     CODE:
     DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags));
     if (flags & 0x01)
        Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
-    RETVAL = dlopen(filename, mode) ;
-    DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL));
+    retv = dlopen(filename, mode) ;
+    DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", retv));
     ST(0) = sv_newmortal() ;
-    if (RETVAL == NULL)
+    if (retv == NULL)
        SaveError(aTHX_ "%s",dlerror()) ;
     else
-       sv_setiv( ST(0), PTR2IV(RETVAL) );
+       sv_setiv( ST(0), PTR2IV(retv) );
 
 
-void *
+void
 dl_find_symbol(libhandle, symbolname)
     void *             libhandle
     char *             symbolname
+    PREINIT:
+    void *retv;
     CODE:
 #if NS_TARGET_MAJOR >= 4
     symbolname = Perl_form_nocontext("_%s", symbolname);
@@ -281,19 +284,19 @@ dl_find_symbol(libhandle, symbolname)
     DLDEBUG(2, PerlIO_printf(Perl_debug_log,
                             "dl_find_symbol(handle=%lx, symbol=%s)\n",
                             (unsigned long) libhandle, symbolname));
-    RETVAL = dlsym(libhandle, symbolname);
+    retv = dlsym(libhandle, symbolname);
     DLDEBUG(2, PerlIO_printf(Perl_debug_log,
-                            "  symbolref = %lx\n", (unsigned long) RETVAL));
+                            "  symbolref = %lx\n", (unsigned long) retv));
     ST(0) = sv_newmortal() ;
-    if (RETVAL == NULL)
+    if (retv == NULL)
        SaveError(aTHX_ "%s",dlerror()) ;
     else
-       sv_setiv( ST(0), PTR2IV(RETVAL) );
+       sv_setiv( ST(0), PTR2IV(retv) );
 
 
 void
 dl_undef_symbols()
-    PPCODE:
+    CODE:
 
 
 
index bf84322..5124722 100644 (file)
@@ -109,44 +109,48 @@ BOOT:
     (void)dl_private_init(aTHX);
  
  
-void *
+void
 dl_load_file(filename, flags=0)
     char *     filename
     int                flags
+    PREINIT:
+    void *retv;
     CODE:
     if (flags & 0x01)
        Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
     DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags));
-    RETVAL = dlopen(filename) ;
-    DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) RETVAL));
+    retv = dlopen(filename) ;
+    DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) retv));
     ST(0) = sv_newmortal() ;
-    if (RETVAL == NULL)
+    if (retv == NULL)
        SaveError(aTHX_ "%s",dlerror()) ;
     else
-       sv_setiv( ST(0), PTR2IV(RETVAL) );
+       sv_setiv( ST(0), PTR2IV(retv) );
  
  
-void *
+void
 dl_find_symbol(libhandle, symbolname)
     void *     libhandle
     char *     symbolname
+    PREINIT:
+    void *retv;
     CODE:
     DLDEBUG(2, PerlIO_printf(Perl_debug_log,
                             "dl_find_symbol(handle=%lx, symbol=%s)\n",
                             (unsigned long) libhandle, symbolname));
-    RETVAL = dlsym(libhandle, symbolname);
+    retv = dlsym(libhandle, symbolname);
     DLDEBUG(2, PerlIO_printf(Perl_debug_log,
-                            "  symbolref = %lx\n", (unsigned long) RETVAL));
+                            "  symbolref = %lx\n", (unsigned long) retv));
     ST(0) = sv_newmortal() ;
-    if (RETVAL == NULL)
+    if (retv == NULL)
        SaveError(aTHX_ "%s",dlerror()) ;
     else
-       sv_setiv( ST(0), PTR2IV(RETVAL) );
+       sv_setiv( ST(0), PTR2IV(retv) );
  
  
 void
 dl_undef_symbols()
-    PPCODE:
+    CODE:
  
  
  
index 94b3fe3..94296cd 100644 (file)
@@ -111,26 +111,27 @@ MODULE = DynaLoader       PACKAGE = DynaLoader
 BOOT:
     (void)dl_private_init(aTHX);
 
-void *
+void
 dl_load_file(filename,flags=0)
     char *             filename
     int                        flags
     PREINIT:
+    void *retv;
     CODE:
   {
     DLDEBUG(1,PerlIO_printf(Perl_debug_log,"dl_load_file(%s):\n", filename));
     if (dl_static_linked(filename) == 0) {
-       RETVAL = PerlProc_DynaLoad(filename);
+       retv = PerlProc_DynaLoad(filename);
     }
     else
-       RETVAL = (void*) Win_GetModuleHandle(NULL);
-    DLDEBUG(2,PerlIO_printf(Perl_debug_log," libref=%x\n", RETVAL));
+       retv = (void*) Win_GetModuleHandle(NULL);
+    DLDEBUG(2,PerlIO_printf(Perl_debug_log," libref=%x\n", retv));
     ST(0) = sv_newmortal() ;
-    if (RETVAL == NULL)
+    if (retv == NULL)
        SaveError(aTHX_ "load_file:%s",
                  OS_Error_String(aTHX)) ;
     else
-       sv_setiv( ST(0), (IV)RETVAL);
+       sv_setiv( ST(0), (IV)retv);
   }
 
 int
@@ -145,26 +146,28 @@ dl_unload_file(libref)
   OUTPUT:
     RETVAL
 
-void *
+void
 dl_find_symbol(libhandle, symbolname)
     void *     libhandle
     char *     symbolname
+    PREINIT:
+    void *retv;
     CODE:
     DLDEBUG(2,PerlIO_printf(Perl_debug_log,"dl_find_symbol(handle=%x, symbol=%s)\n",
                      libhandle, symbolname));
-    RETVAL = (void*) GetProcAddress((HINSTANCE) libhandle, symbolname);
-    DLDEBUG(2,PerlIO_printf(Perl_debug_log,"  symbolref = %x\n", RETVAL));
+    retv = (void*) GetProcAddress((HINSTANCE) libhandle, symbolname);
+    DLDEBUG(2,PerlIO_printf(Perl_debug_log,"  symbolref = %x\n", retv));
     ST(0) = sv_newmortal() ;
-    if (RETVAL == NULL)
+    if (retv == NULL)
        SaveError(aTHX_ "find_symbol:%s",
                  OS_Error_String(aTHX)) ;
     else
-       sv_setiv( ST(0), (IV)RETVAL);
+       sv_setiv( ST(0), (IV)retv);
 
 
 void
 dl_undef_symbols()
-    PPCODE:
+    CODE: