/*
- * 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.
// EXTERNAL INCLUDES
#include <dali/devel-api/adaptor-framework/application-devel.h>
#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/debug.h>
#include <dali/public-api/adaptor-framework/application.h>
#include <dali/public-api/adaptor-framework/window-enumerations.h>
{
// 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;
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)
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;
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;
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;
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;
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;
/*
- * 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.
argWatchV[index] = new char[length + 1];
if( retPtr )
{
- strncpy(argWatchV[index], retPtr, length);
+ memcpy(argWatchV[index], retPtr, length);
}
argWatchV[index][length] = '\0';
index++;
argWatchV[index] = new char[length + 1];
if( retPtr )
{
- strncpy(argWatchV[index], retPtr, length);
+ memcpy(argWatchV[index], retPtr, length);
}
argWatchV[index][length] = '\0';
index++;
argWatchV[index] = new char[length + 1];
if( retPtr )
{
- strncpy(argWatchV[index], retPtr, length);
+ memcpy(argWatchV[index], retPtr, length);
}
argWatchV[index][length] = '\0';
index++;
argWatchV[index] = new char[length + 1];
if( retPtr )
{
- strncpy(argWatchV[index], retPtr, length);
+ memcpy(argWatchV[index], retPtr, length);
}
argWatchV[index][length] = '\0';
index++;