Removed some leftover debugging accidentally added with
[p5sagit/p5-mst-13.2.git] / ext / DynaLoader / dlutils.c
index 620d31b..e9dd34a 100644 (file)
@@ -8,13 +8,19 @@
  *                      files when the interpreter exits
  */
 
+#ifndef START_MY_CXT /* Some IDEs try compiling this standalone. */
+#   include "EXTERN.h"
+#   include "perl.h"
+#   include "XSUB.h"
+#endif
+
 #ifndef XS_VERSION
 #  define XS_VERSION "0"
 #endif
 #define MY_CXT_KEY "DynaLoader::_guts" XS_VERSION
 
 typedef struct {
-    char *     x_dl_last_error;        /* pointer to allocated memory for
+    SV*                x_dl_last_error;        /* pointer to allocated memory for
                                           last error message */
     int                x_dl_nonlazy;           /* flag for immediate rather than lazy
                                           linking (spots unresolved symbol) */
@@ -31,7 +37,7 @@ typedef struct {
 
 START_MY_CXT
 
-#define dl_last_error  (MY_CXT.x_dl_last_error)
+#define dl_last_error  (SvPVX(MY_CXT.x_dl_last_error))
 #define dl_nonlazy     (MY_CXT.x_dl_nonlazy)
 #ifdef DL_LOADONCEONLY
 #define dl_loaded_files        (MY_CXT.x_dl_loaded_files)
@@ -85,10 +91,10 @@ dl_generic_private_init(pTHX)       /* called by dl_*.xs dl_private_init() */
     char *perl_dl_nonlazy;
     MY_CXT_INIT;
 
-    dl_last_error = NULL;
+    MY_CXT.x_dl_last_error = newSVpvn("", 0);
     dl_nonlazy = 0;
 #ifdef DL_LOADONCEONLY
-    dl_loaded_files = Nullhv;
+    dl_loaded_files = NULL;
 #endif
 #ifdef DEBUGGING
     {
@@ -110,14 +116,15 @@ dl_generic_private_init(pTHX)     /* called by dl_*.xs dl_private_init() */
 }
 
 
+#ifndef SYMBIAN
 /* SaveError() takes printf style args and saves the result in dl_last_error */
 static void
-SaveError(pTHX_ char* pat, ...)
+SaveError(pTHX_ const char* pat, ...)
 {
     dMY_CXT;
     va_list args;
     SV *msv;
-    char *message;
+    const char *message;
     STRLEN len;
 
     /* This code is based on croak/warn, see mess() in util.c */
@@ -129,14 +136,9 @@ SaveError(pTHX_ char* pat, ...)
     message = SvPV(msv,len);
     len++;             /* include terminating null char */
 
-    /* Allocate some memory for the error message */
-    if (dl_last_error)
-        dl_last_error = (char*)saferealloc(dl_last_error, len);
-    else
-        dl_last_error = (char*)safemalloc(len);
-
     /* Copy message into dl_last_error (including terminating null char) */
-    strncpy(dl_last_error, message, len) ;
+    sv_setpvn(MY_CXT.x_dl_last_error, message, len) ;
     DLDEBUG(2,PerlIO_printf(Perl_debug_log, "DynaLoader: stored error msg '%s'\n",dl_last_error));
 }
+#endif