summaryrefslogtreecommitdiff
path: root/ext/DynaLoader
diff options
context:
space:
mode:
authorCraig A. Berry <craigberry@mac.com>2009-03-05 17:28:13 -0600
committerCraig A. Berry <craigberry@mac.com>2009-03-05 17:28:13 -0600
commitec6cc21dee082f68c9c168d6e9b7712a5e7e7ccf (patch)
tree1e93cdc8e8ca136a0612efb6ebb3a0eb86eba81b /ext/DynaLoader
parentbef46b70a2ecc24f7978a352079836f3e02b53bd (diff)
downloadperl-ec6cc21dee082f68c9c168d6e9b7712a5e7e7ccf.tar.gz
In dl_vms.xs, treat dl_last_error like the SV that it is.
We apparently missed the memo back at 591022fb18ce8ae85902133bbbfe8e1de05216b1.
Diffstat (limited to 'ext/DynaLoader')
-rw-r--r--ext/DynaLoader/dl_vms.xs14
1 files changed, 2 insertions, 12 deletions
diff --git a/ext/DynaLoader/dl_vms.xs b/ext/DynaLoader/dl_vms.xs
index 6ebcd9bfaa..5eb0d07673 100644
--- a/ext/DynaLoader/dl_vms.xs
+++ b/ext/DynaLoader/dl_vms.xs
@@ -99,20 +99,10 @@ copy_errmsg(msg,unused)
dTHX;
dMY_CXT;
if (*(msg->dsc$a_pointer) == '%') { /* first line */
- if (dl_last_error)
- strncpy((dl_last_error = saferealloc(dl_last_error,msg->dsc$w_length+1)),
- msg->dsc$a_pointer, msg->dsc$w_length);
- else
- strncpy((dl_last_error = safemalloc(msg->dsc$w_length+1)),
- msg->dsc$a_pointer, msg->dsc$w_length);
- dl_last_error[msg->dsc$w_length] = '\0';
+ sv_setpvn(MY_CXT.x_dl_last_error, msg->dsc$a_pointer, (STRLEN)msg->dsc$w_length);
}
else { /* continuation line */
- int errlen = strlen(dl_last_error);
- dl_last_error = saferealloc(dl_last_error, errlen + msg->dsc$w_length + 2);
- dl_last_error[errlen] = '\n'; dl_last_error[errlen+1] = '\0';
- strncat(dl_last_error, msg->dsc$a_pointer, msg->dsc$w_length);
- dl_last_error[errlen+msg->dsc$w_length+1] = '\0';
+ sv_catpvn(MY_CXT.x_dl_last_error, msg->dsc$a_pointer, (STRLEN)msg->dsc$w_length);
}
DLDEBUG(2,PerlIO_printf(Perl_debug_log, "Saved error message: %s\n", dl_last_error));
return 0;