From: Eunki Hong Date: Tue, 11 Feb 2025 16:14:30 +0000 (+0900) Subject: Fix compile warning for gcc-14 + Clean application wrap code X-Git-Tag: dali_2.4.6~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F86%2F319486%2F1;p=platform%2Fcore%2Fuifw%2Fdali-csharp-binder.git Fix compile warning for gcc-14 + Clean application wrap code 1. Let we use memcpy instead of strncpy, to remove [-Wstringop-truncation] - Since we can assume that last string is null-terminated, we can skip this warning 2. Remove duplicated codes, and use GenerationArgV for application constuctors. 3. Remove some possible cases to nullptr constructor for std::string Change-Id: I22baee82bae05fcc4087431730c6386fa74f52b2 Signed-off-by: Eunki Hong --- diff --git a/dali-csharp-binder/dali-adaptor/application-wrap.cpp b/dali-csharp-binder/dali-adaptor/application-wrap.cpp index 8addc5f8..1163d49e 100644 --- a/dali-csharp-binder/dali-adaptor/application-wrap.cpp +++ b/dali-csharp-binder/dali-adaptor/application-wrap.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Samsung Electronics Co., Ltd. + * Copyright (c) 2025 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ // EXTERNAL INCLUDES #include #include +#include #include #include @@ -54,6 +55,14 @@ void GenerationArgV(int argc, char* argv) { // TODO : What should we do if already generated argv exist? ReleaseArgVMemory(); + + // Avoid error case when argc is negative. + if(argc < 0) + { + DALI_LOG_ERROR("[ERROR!] Invalid argc value comes! argc : %d, argv : %p\n", argc, argv); + argc = 0; + } + // generate argv data from the C# args int index = 0; int length = 0; @@ -62,16 +71,19 @@ void GenerationArgV(int argc, char* argv) gArgV = new char*[argc + 1]; - for(retPtr = strtok_r(argv, " ", &nextPtr); - retPtr != NULL && index < argc; - retPtr = strtok_r(NULL, " ", &nextPtr)) + if(argv != NULL) { - length = 0; - length = strlen(retPtr); - gArgV[index] = new char[length + 1]; - strncpy(gArgV[index], retPtr, length); - gArgV[index][length] = '\0'; - index++; + for(retPtr = strtok_r(argv, " ", &nextPtr); + retPtr != NULL && index < argc; + retPtr = strtok_r(NULL, " ", &nextPtr)) + { + length = 0; + length = strlen(retPtr); + gArgV[index] = new char[length + 1]; + memcpy(gArgV[index], retPtr, length); + gArgV[index][length] = '\0'; + index++; + } } while(index < argc) @@ -292,7 +304,7 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_3(int jarg1, char return jresult; } -SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__MANUAL_4(int jarg1, char* jarg2, char* jarg3, int jarg4) +SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__MANUAL_4(int nuiArgc, char* nuiArgv, char* jarg3, int jarg4) { void* jresult; int* argc = nullptr; @@ -300,42 +312,11 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__MANUAL_4(int jarg1, ch Dali::Application::WINDOW_MODE arg4; 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]; + GUARD_ON_NULL_RET0(jarg3); - 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; - } + GenerationArgV(nuiArgc, nuiArgv); + argc = &gArgC; + argv = &gArgV; std::string arg3(jarg3); arg4 = (Dali::Application::WINDOW_MODE)jarg4; @@ -1697,7 +1678,7 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_6(int nuiArgc, ch return jresult; } -SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New_WithWindowSizePosition(int jarg1, char* jarg2, char* jarg3, int jarg4, void* jarg5) +SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New_WithWindowSizePosition(int nuiArgc, char* nuiArgv, char* jarg3, int jarg4, void* jarg5) { void* jresult; int* argc = nullptr; @@ -1707,42 +1688,11 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New_WithWindowSizePosition( Dali::PositionSize* argp5; 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; + GUARD_ON_NULL_RET0(jarg3); - argc = &gArgC; - argv = &gArgV; - } + GenerationArgV(nuiArgc, nuiArgv); + argc = &gArgC; + argv = &gArgV; std::string arg3(jarg3); arg4 = (Dali::Application::WINDOW_MODE)jarg4; @@ -1772,42 +1722,9 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New_WithWindowData(int nuiA Dali::WindowData* pWindowData; 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*[nuiArgc + 1]; - - for(retPtr = strtok_r(nuiArgv, " ", &nextPtr); - retPtr != NULL && index < nuiArgc; - 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 < nuiArgc) - { - // if nuiArgc - index >1, maybe cause error. - gArgV[index] = NULL; - index++; - } - - gArgV[nuiArgc] = NULL; - gArgC = nuiArgc; - - argc = &gArgC; - argv = &gArgV; - } + GenerationArgV(nuiArgc, nuiArgv); + argc = &gArgC; + argv = &gArgV; std::string styleSheet(nuiStyleSheet); pWindowData = (Dali::WindowData*)nuiWindowData; diff --git a/dali-csharp-binder/dali-adaptor/component-application-wrap.cpp b/dali-csharp-binder/dali-adaptor/component-application-wrap.cpp index 2d6454be..2fdcdbc9 100644 --- a/dali-csharp-binder/dali-adaptor/component-application-wrap.cpp +++ b/dali-csharp-binder/dali-adaptor/component-application-wrap.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2025 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -59,7 +59,7 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_new_ComponentApplication(int jarg1, ch argV[index] = new char[length + 1]; if( retPtr ) { - strncpy(argV[index], retPtr, length); + memcpy(argV[index], retPtr, length); } argV[index][length] = '\0'; index++; @@ -75,7 +75,7 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_new_ComponentApplication(int jarg1, ch argV[index] = new char[length + 1]; if( retPtr ) { - strncpy(argV[index], retPtr, length); + memcpy(argV[index], retPtr, length); } argV[index][length] = '\0'; index++; diff --git a/dali-csharp-binder/dali-adaptor/dali-adaptor-wrap.cpp b/dali-csharp-binder/dali-adaptor/dali-adaptor-wrap.cpp index 69e01f5b..05243bf9 100644 --- a/dali-csharp-binder/dali-adaptor/dali-adaptor-wrap.cpp +++ b/dali-csharp-binder/dali-adaptor/dali-adaptor-wrap.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Samsung Electronics Co., Ltd. + * Copyright (c) 2025 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -1528,7 +1528,7 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_WidgetApplication_New(int jarg1, char argWidgetV[index] = new char[length + 1]; if( retPtr ) { - strncpy(argWidgetV[index], retPtr, length); + memcpy(argWidgetV[index], retPtr, length); } argWidgetV[index][length] = '\0'; index++; @@ -1544,7 +1544,7 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_WidgetApplication_New(int jarg1, char argWidgetV[index] = new char[length + 1]; if( retPtr ) { - strncpy(argWidgetV[index], retPtr, length); + memcpy(argWidgetV[index], retPtr, length); } argWidgetV[index][length] = '\0'; index++; diff --git a/dali-csharp-binder/dali-adaptor/watch-wrap.cpp b/dali-csharp-binder/dali-adaptor/watch-wrap.cpp index b776d36c..e00b238e 100755 --- a/dali-csharp-binder/dali-adaptor/watch-wrap.cpp +++ b/dali-csharp-binder/dali-adaptor/watch-wrap.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2025 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -338,7 +338,7 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_WatchApplication_New__SWIG_1(int jarg1 argWatchV[index] = new char[length + 1]; if( retPtr ) { - strncpy(argWatchV[index], retPtr, length); + memcpy(argWatchV[index], retPtr, length); } argWatchV[index][length] = '\0'; index++; @@ -354,7 +354,7 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_WatchApplication_New__SWIG_1(int jarg1 argWatchV[index] = new char[length + 1]; if( retPtr ) { - strncpy(argWatchV[index], retPtr, length); + memcpy(argWatchV[index], retPtr, length); } argWatchV[index][length] = '\0'; index++; @@ -397,7 +397,7 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_WatchApplication_New__SWIG_2(int jarg1 argWatchV[index] = new char[length + 1]; if( retPtr ) { - strncpy(argWatchV[index], retPtr, length); + memcpy(argWatchV[index], retPtr, length); } argWatchV[index][length] = '\0'; index++; @@ -413,7 +413,7 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_WatchApplication_New__SWIG_2(int jarg1 argWatchV[index] = new char[length + 1]; if( retPtr ) { - strncpy(argWatchV[index], retPtr, length); + memcpy(argWatchV[index], retPtr, length); } argWatchV[index][length] = '\0'; index++;