Jelajahi Sumber

ncd/modules/call2.c: support non-ContinuousString strings

ambrop7 13 tahun lalu
induk
melakukan
a696e31351
1 mengubah file dengan 12 tambahan dan 4 penghapusan
  1. 12 4
      ncd/modules/call2.c

+ 12 - 4
ncd/modules/call2.c

@@ -326,7 +326,15 @@ static void func_new_call_with_caller_target (void *vo, NCDModuleInst *i, const
         goto fail0;
     }
     
-    if (!CallNames_InitNames(o_ct, i->params->iparams->string_index, NCDVal_StringData(caller_target_arg), NCDVal_StringLength(caller_target_arg))) {
+    NCDValContString cts;
+    if (!NCDVal_StringContinuize(caller_target_arg, &cts)) {
+        ModuleLog(i, BLOG_ERROR, "NCDVal_StringContinuize failed");
+        goto fail0;
+    }
+    
+    int res = CallNames_InitNames(o_ct, i->params->iparams->string_index, cts.data, NCDVal_StringLength(caller_target_arg));
+    NCDValContString_Free(&cts);
+    if (!res) {
         ModuleLog(i, BLOG_ERROR, "CallerNames_InitNames failed");
         goto fail0;
     }
@@ -462,7 +470,7 @@ static struct NCDModule modules[] = {
         .func_die = func_die,
         .func_clean = func_clean,
         .func_getobj = func_getobj,
-        .flags = NCDMODULE_FLAG_CAN_RESOLVE_WHEN_DOWN,
+        .flags = NCDMODULE_FLAG_CAN_RESOLVE_WHEN_DOWN|NCDMODULE_FLAG_ACCEPT_NON_CONTINUOUS_STRINGS,
         .alloc_size = sizeof(struct instance)
     }, {
         .type = "call_with_caller_target",
@@ -470,7 +478,7 @@ static struct NCDModule modules[] = {
         .func_die = func_die_with_caller_target,
         .func_clean = func_clean,
         .func_getobj = func_getobj,
-        .flags = NCDMODULE_FLAG_CAN_RESOLVE_WHEN_DOWN,
+        .flags = NCDMODULE_FLAG_CAN_RESOLVE_WHEN_DOWN|NCDMODULE_FLAG_ACCEPT_NON_CONTINUOUS_STRINGS,
         .alloc_size = sizeof(struct instance_with_caller_target)
     }, {
         .type = "embcall2_multif",
@@ -478,7 +486,7 @@ static struct NCDModule modules[] = {
         .func_die = func_die,
         .func_clean = func_clean,
         .func_getobj = func_getobj,
-        .flags = NCDMODULE_FLAG_CAN_RESOLVE_WHEN_DOWN,
+        .flags = NCDMODULE_FLAG_CAN_RESOLVE_WHEN_DOWN|NCDMODULE_FLAG_ACCEPT_NON_CONTINUOUS_STRINGS,
         .alloc_size = sizeof(struct instance)
     }, {
         .type = NULL