# New Ticket Created by NotFound
# Please include the string: [perl #58438]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58438 >
I was doing a simple test of NCI calls with the xlib function
XDisplayName, and found that nci can't handle a NULL string argument.
Passing a NULL Parrot String segfaults.
The attached patch passes a NULL char * when a NULL Parrot String is
used. Don't know if this is the desired behaviour, I expect comments.
--
Salu2
Index: tools/build/nativecall.pl
===================================================================
--- tools/build/nativecall.pl (revision 30618)
+++ tools/build/nativecall.pl (working copy)
@@ -505,8 +505,8 @@
/t/ && do {
push @{$temps_ref}, "char *t_$temp_num;";
push @{$extra_preamble_ref},
- "t_$temp_num = string_to_cstring(interp, GET_NCI_S($reg_num));";
- push @{$extra_postamble_ref}, "string_cstring_free(t_$temp_num);";
+ "{STRING * s= GET_NCI_S($reg_num); t_$temp_num = s ? string_to_cstring(interp, s) : (char *) NULL;}";
+ push @{$extra_postamble_ref}, "do { if (t_$temp_num) string_cstring_free(t_$temp_num); } while (0);";
return "t_$temp_num";
};
/b/ && do {