[Tizen] fix IME window crash issue 61/299361/1
authordongsug.song <dongsug.song@samsung.com>
Tue, 26 Sep 2023 09:37:03 +0000 (18:37 +0900)
committerdongsug.song <dongsug.song@samsung.com>
Tue, 26 Sep 2023 09:37:03 +0000 (18:37 +0900)
Change-Id: I3dd6ef31e5ac21b91a7abfeeebacb19307ab8f9c

dali-csharp-binder/dali-adaptor/application-wrap.cpp

index fb4435a..9fb71bf 100644 (file)
@@ -1610,7 +1610,7 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_4(int jarg1, char
   return jresult;
 }
 
-SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_5(int jarg1, char* jarg3, int jarg4, void* jarg5, int jarg6)
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_5(int jarg1, char* jarg2, char* jarg3, int jarg4, void* jarg5, int jarg6)
 {
   void*                          jresult;
   int*                           argc = nullptr;
@@ -1621,6 +1621,43 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_5(int jarg1, char
   Dali::WindowType               arg6;
   Dali::Application              result;
 
+  {
+    // TODO : What should we do if already generated argv exist?
+    ReleaseArgVMemory();
+    // generate argv data from the C# args
+    int   index  = 0;
+    int   length = 0;
+    char* retPtr = NULL;
+    char* nextPtr;
+
+    gArgV = new char*[jarg1 + 1];
+
+    for(retPtr = strtok_r(jarg2, " ", &nextPtr);
+        retPtr != NULL && index < jarg1;
+        retPtr = strtok_r(NULL, " ", &nextPtr))
+    {
+      length       = 0;
+      length       = strlen(retPtr);
+      gArgV[index] = new char[length + 1];
+      strncpy(gArgV[index], retPtr, length);
+      gArgV[index][length] = '\0';
+      index++;
+    }
+
+    while(index < jarg1)
+    {
+      //if jarg1 - index >1, maybe cause error.
+      gArgV[index] = NULL;
+      index++;
+    }
+
+    gArgV[jarg1] = NULL;
+    gArgC        = jarg1;
+
+    argc = &gArgC;
+    argv = &gArgV;
+  }
+
   if(!jarg3)
   {
     SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null string", 0);