Index: src/nci/extra_thunks.c
===================================================================
--- src/nci/extra_thunks.c	(revision 49092)
+++ src/nci/extra_thunks.c	(working copy)
@@ -2640,9 +2640,9 @@
 
 }
 static void
-pcf_p_tiB3P(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
+pcf_p_tiV3P(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
 {
-    typedef void *(* func_t)(char *, int, char **, int *, PMC *);
+    typedef void *(* func_t)(char *, int, void **, int *, PMC *);
     func_t fn_pointer;
     void *orig_func;
     PMC * const ctx         = CURRENT_CONTEXT(interp);
@@ -2653,15 +2653,15 @@
 
     char *t_0; STRING *ts_0;
     INTVAL t_1;
-    char *t_2; STRING *ts_2;
+    PMC *t_2; void *v_2;
     PMC *t_3; int i_3;
     PMC * t_4;
     UNUSED(return_data); /* Potentially unused, at least */
-    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SISPP", &ts_0, &t_1, &ts_2, &t_3, &t_4);
-    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);t_2 = STRING_IS_NULL(ts_2) ? (char *) NULL : Parrot_str_to_cstring(interp, ts_2);i_3 = VTABLE_get_integer(interp, t_3);
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIPPP", &ts_0, &t_1, &t_2, &t_3, &t_4);
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);v_2 = VTABLE_get_pointer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
-    return_data =  (void *)(*fn_pointer)(t_0, t_1, &t_2, &i_3, t_4);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, &v_2, &i_3, t_4);
     if (return_data != NULL) {
                              final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
                              VTABLE_set_pointer(interp, final_destination, return_data);
@@ -2669,7 +2669,7 @@
                           ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
     if (!STRING_IS_NULL(ts_0)) Parrot_str_free_cstring(t_0);
 
-if (!STRING_IS_NULL(ts_2)) Parrot_str_free_cstring(t_2);
+VTABLE_set_pointer(interp, t_2, v_2);
 VTABLE_set_integer_native(interp, t_3, i_3);
 
 }
@@ -7121,8 +7121,8 @@
     VTABLE_set_pmc_keyed_str(interp, nci_funcs, CONST_STRING(interp, "ppttttitl"), temp_pmc);
 
     temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
-    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tiB3P);
-    VTABLE_set_pmc_keyed_str(interp, nci_funcs, CONST_STRING(interp, "ptiB3P"), temp_pmc);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tiV3P);
+    VTABLE_set_pmc_keyed_str(interp, nci_funcs, CONST_STRING(interp, "ptiV3P"), temp_pmc);
 
     temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
     VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tip3P);
