diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2002-05-16 22:54:36 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-05-16 22:54:36 +0000 |
commit | 14f9eb14d6f099e5d7b4e2e185fd86af1f131412 (patch) | |
tree | 3aaab8f949809d2cbc7a58b56168628082d6b143 /ext/DynaLoader | |
parent | 36d184568293ae9727e0112adb7307e78e8fef64 (diff) | |
download | perl-14f9eb14d6f099e5d7b4e2e185fd86af1f131412.tar.gz |
Purify: dl_last_error was leaking.
p4raw-id: //depot/perl@16638
Diffstat (limited to 'ext/DynaLoader')
-rw-r--r-- | ext/DynaLoader/dlutils.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/ext/DynaLoader/dlutils.c b/ext/DynaLoader/dlutils.c index 620d31b21e..2bd73ad817 100644 --- a/ext/DynaLoader/dlutils.c +++ b/ext/DynaLoader/dlutils.c @@ -14,7 +14,7 @@ #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 +31,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,7 +85,7 @@ 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; @@ -129,14 +129,8 @@ 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)); } |