diff --git a/util/native_module_util.cpp b/util/native_module_util.cpp index 8d98e83e4f065ed3df24ff3674f5d00ecec4f576..9d738de0a7e1d6bb3bfe8c78c039cade9bb65cba 100644 --- a/util/native_module_util.cpp +++ b/util/native_module_util.cpp @@ -84,12 +84,20 @@ namespace OHOS::Util { if (formatsize > 0) { format = new char[formatsize + 1]; napi_get_value_string_utf8(env, argv[0], format, formatsize + 1, &formatsize); + std::string str = format; + delete []format; + delete []argv; + argv = nullptr; + format = nullptr; + return FormatString(str); } - std::string str = format; - delete []format; - delete []argv; - argv = nullptr; - format = nullptr; + napi_value res = nullptr; + NAPI_CALL(env, napi_get_undefined(env, &res)); + return res; + } + + static napi_value FormatString(std::string &str) + { std::string res; size_t strSize = str.size(); for (size_t i = 0; i < strSize; ++i) { @@ -144,29 +152,32 @@ namespace OHOS::Util { napi_get_value_string_utf8(env, argv[0], nullptr, 0, &formatsize); if (formatsize > 0) { format = new char[formatsize + 1]; - } - napi_get_value_string_utf8(env, argv[0], format, formatsize + 1, &formatsize); - std::string printInfo; - std::vector value; - for (size_t i = 1; i < argc; i++) { - char* valueString = nullptr; - size_t valuesize = 0; - napi_get_value_string_utf8(env, argv[i], nullptr, 0, &valuesize); - if (valuesize > 0) { - valueString = new char[valuesize + 1]; + napi_get_value_string_utf8(env, argv[0], format, formatsize + 1, &formatsize); + std::string printInfo; + std::vector value; + for (size_t i = 1; i < argc; i++) { + char* valueString = nullptr; + size_t valuesize = 0; + napi_get_value_string_utf8(env, argv[i], nullptr, 0, &valuesize); + if (valuesize > 0) { + valueString = new char[valuesize + 1]; + } + napi_get_value_string_utf8(env, argv[i], valueString, valuesize + 1, &valuesize); + value.push_back(valueString); + delete []valueString; + valueString = nullptr; } - napi_get_value_string_utf8(env, argv[i], valueString, valuesize + 1, &valuesize); - value.push_back(valueString); - delete []valueString; - valueString = nullptr; + printInfo = PrintfString(format, value); + napi_create_string_utf8(env, printInfo.c_str(), printInfo.size(), &result); + delete []format; + delete []argv; + argv = nullptr; + format = nullptr; + return result; } - printInfo = PrintfString(format, value); - napi_create_string_utf8(env, printInfo.c_str(), printInfo.size(), &result); - delete []format; - delete []argv; - argv = nullptr; - format = nullptr; - return result; + napi_value res = nullptr; + NAPI_CALL(env, napi_get_undefined(env, &res)); + return res; } static napi_value GetErrorString(napi_env env, napi_callback_info info) @@ -206,6 +217,28 @@ namespace OHOS::Util { } } + static void GetSecPara(napi_env env, napi_value valData, std::vector ¶Vec) + { + napi_value messageKeyFatal = nullptr; + const char* messageKeyStrFatal = "fatal"; + napi_value messageKeyIgnorebom = nullptr; + const char* messageKeyStrIgnorebom = "ignoreBOM"; + napi_value resultFatal = nullptr; + napi_value resultIgnorebom = nullptr; + bool bResultFat = false; + bool bResultIgnbom = false; + NAPI_CALL(env, napi_create_string_utf8(env, messageKeyStrFatal, strlen(messageKeyStrFatal), + &messageKeyFatal)); + NAPI_CALL(env, napi_create_string_utf8(env, messageKeyStrIgnorebom, strlen(messageKeyStrIgnorebom), + &messageKeyIgnorebom)); + NAPI_CALL(env, napi_get_property(env, valData, messageKeyFatal, &resultFatal)); + NAPI_CALL(env, napi_get_property(env, valData, messageKeyIgnorebom, &resultIgnorebom)); + napi_status naFat = napi_get_value_bool(env, resultFatal, &bResultFat); + napi_status naBom = napi_get_value_bool(env, resultIgnorebom, &bResultIgnbom); + SetVec(naFat, naBom, bResultFat, bResultIgnbom, paraVec); + } + + static napi_value TextdecoderConstructor(napi_env env, napi_callback_info info) { size_t tempArgc = 0; @@ -237,32 +270,14 @@ namespace OHOS::Util { } NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], type, typeLen + 1, &typeLen)); // second para - napi_value messageKeyFatal = nullptr; - const char* messageKeyStrFatal = "fatal"; - napi_value messageKeyIgnorebom = nullptr; - const char* messageKeyStrIgnorebom = "ignoreBOM"; - napi_value resultFatal = nullptr; - napi_value resultIgnorebom = nullptr; - bool bResultFat = false; - bool bResultIgnbom = false; - NAPI_CALL(env, napi_create_string_utf8(env, messageKeyStrFatal, strlen(messageKeyStrFatal), - &messageKeyFatal)); - NAPI_CALL(env, napi_create_string_utf8(env, messageKeyStrIgnorebom, strlen(messageKeyStrIgnorebom), - &messageKeyIgnorebom)); - NAPI_CALL(env, napi_get_property(env, argv[1], messageKeyFatal, &resultFatal)); - NAPI_CALL(env, napi_get_property(env, argv[1], messageKeyIgnorebom, &resultIgnorebom)); - napi_status naFat = napi_get_value_bool(env, resultFatal, &bResultFat); - napi_status naBom = napi_get_value_bool(env, resultIgnorebom, &bResultIgnbom); - SetVec(naFat, naBom, bResultFat, bResultIgnbom, paraVec); + GetSecPara(env, argv[1], paraVec); } std::string enconding = "utf-8"; if (type != nullptr) { enconding = type; } - if (type != nullptr) { - delete []type; - type = nullptr; - } + delete []type; + type = nullptr; auto objectInfo = new TextDecoder(env, enconding, paraVec); NAPI_CALL(env, napi_wrap( env, thisVar, objectInfo, @@ -495,8 +510,7 @@ namespace OHOS::Util { // util module register extern "C" - __attribute__((constructor)) - void RegisterModule() + __attribute__((constructor)) void RegisterModule() { napi_module_register(&utilModule); }