From d01ff991b9beb120be849dc94f916e91b0297998 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 14:19:50 +0300 Subject: [PATCH 01/17] Upd: Code-check: Copyright to "interop/src/{arkts,interop}/events.ts" --- interop/src/arkts/events.ts | 15 +++++++++++++++ interop/src/interop/events.ts | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/interop/src/arkts/events.ts b/interop/src/arkts/events.ts index cc06b90c5c..2d57f84a02 100644 --- a/interop/src/arkts/events.ts +++ b/interop/src/arkts/events.ts @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2022-2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { int32 } from '@koalaui/common'; import { DeserializerBase } from './DeserializerBase'; import { InteropNativeModule } from './InteropNativeModule'; diff --git a/interop/src/interop/events.ts b/interop/src/interop/events.ts index 05b11d7710..4cc5c44888 100644 --- a/interop/src/interop/events.ts +++ b/interop/src/interop/events.ts @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2022-2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { int32 } from '@koalaui/common'; import { DeserializerBase } from './DeserializerBase'; import { InteropNativeModule } from './InteropNativeModule'; -- Gitee From f662db6170c495bda2f22e5b01a3a2810bd8f05b Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 14:29:32 +0300 Subject: [PATCH 02/17] Upd: Code-check: "args"=>"npm_args" "gn/command/npm_util.py" --- gn/command/npm_util.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gn/command/npm_util.py b/gn/command/npm_util.py index 2dec5865c7..626c86ddfd 100755 --- a/gn/command/npm_util.py +++ b/gn/command/npm_util.py @@ -53,17 +53,17 @@ if args.stdlib_path: os.environ["PANDA_SDK_PATH"] = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../ui2abc/build/sdk") -def run(args, dir = None): +def run(npm_args, dir = None): os.chdir(dir or project_path) if os.environ.get("KOALA_LOG_STDOUT"): - subprocess.run(["npm"] + args, env=os.environ, text=True, check=True, stderr=subprocess.STDOUT) + subprocess.run(["npm"] + npm_args, env=os.environ, text=True, check=True, stderr=subprocess.STDOUT) return - result = subprocess.run(["npm"] + args, capture_output=True, env=os.environ, text=True) + result = subprocess.run(["npm"] + npm_args, capture_output=True, env=os.environ, text=True) with open(koala_log, "a+") as f: - f.write(f"npm args: {args}; project: {project_path}:\n" + result.stdout) + f.write(f"npm args: {npm_args}; project: {project_path}:\n" + result.stdout) if result.returncode != 0: - f.write(f"npm args: {args}; project: {project_path}:\n" + result.stderr) + f.write(f"npm args: {npm_args}; project: {project_path}:\n" + result.stderr) print(open(koala_log, "r").read()) raise Exception("npm failed") f.close() -- Gitee From ff5fb56fcb59c9861900c2542ae9fb4dd30c6bdd Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:04:59 +0300 Subject: [PATCH 03/17] Upd: Code-check: rename "ets1.2/libarkts/rollup{.=>-}lib.mjs" --- ui2abc/libarkts/{rollup.lib.mjs => rollup-lib.mjs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ui2abc/libarkts/{rollup.lib.mjs => rollup-lib.mjs} (100%) diff --git a/ui2abc/libarkts/rollup.lib.mjs b/ui2abc/libarkts/rollup-lib.mjs similarity index 100% rename from ui2abc/libarkts/rollup.lib.mjs rename to ui2abc/libarkts/rollup-lib.mjs -- Gitee From ffcd7ce5f10e3d9a6d44264554240db80e826e22 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:07:45 +0300 Subject: [PATCH 04/17] Upd: Code-check: rename argument "args=>npm_args" ("gn/script/npm.py") --- gn/script/npm.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gn/script/npm.py b/gn/script/npm.py index 7bcc018a3e..db6f176cd1 100755 --- a/gn/script/npm.py +++ b/gn/script/npm.py @@ -56,17 +56,17 @@ if args.panda_sdk_path: os.environ["PANDA_SDK_PATH"] = args.panda_sdk_path # os.environ["PANDA_SDK_PATH"] = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../ui2abc/build/sdk") -def run(args, dir = None): +def run(npm_args, dir = None): os.chdir(dir or project_path) if os.environ.get("KOALA_LOG_STDOUT"): - subprocess.run(["npm"] + args, env=os.environ, text=True, check=True, stderr=subprocess.STDOUT) + subprocess.run(["npm"] + npm_args, env=os.environ, text=True, check=True, stderr=subprocess.STDOUT) return - result = subprocess.run(["npm"] + args, capture_output=True, env=os.environ, text=True) + result = subprocess.run(["npm"] + npm_args, capture_output=True, env=os.environ, text=True) with open(koala_log, "a+") as f: - f.write(f"npm args: {args}; project: {project_path}:\n" + result.stdout) + f.write(f"npm args: {npm_args}; project: {project_path}:\n" + result.stdout) if result.returncode != 0: - f.write(f"npm args: {args}; project: {project_path}:\n" + result.stderr) + f.write(f"npm args: {npm_args}; project: {project_path}:\n" + result.stderr) print(open(koala_log, "r").read()) raise Exception("npm failed") f.close() -- Gitee From 25225dd961c44d1be3060ce77e65ee3141d55116 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:09:59 +0300 Subject: [PATCH 05/17] Upd: Code-check: remove commented code ("gn/script/npm.py") --- gn/script/npm.py | 1 - 1 file changed, 1 deletion(-) diff --git a/gn/script/npm.py b/gn/script/npm.py index db6f176cd1..09499e0083 100755 --- a/gn/script/npm.py +++ b/gn/script/npm.py @@ -54,7 +54,6 @@ if args.stdlib_path: os.environ["ETS_STDLIB_PATH"] = args.stdlib_path if args.panda_sdk_path: os.environ["PANDA_SDK_PATH"] = args.panda_sdk_path -# os.environ["PANDA_SDK_PATH"] = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../ui2abc/build/sdk") def run(npm_args, dir = None): os.chdir(dir or project_path) -- Gitee From 36649dfa8f3e70029813a3600598b671df384fe8 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:14:57 +0300 Subject: [PATCH 06/17] Upd: Code-check: magic number => named --- interop/src/cpp/DeserializerBase.h | 9 +++++++-- interop/src/cpp/SerializerBase.h | 7 +++++-- interop/src/cpp/jni/convertors-jni.cc | 9 ++++++--- interop/src/cpp/jsc/convertors-jsc.cc | 6 ++++-- interop/src/cpp/napi/convertors-napi.h | 12 ++++++++---- interop/src/cpp/ohos/oh_sk_log.cc | 5 +++-- interop/src/cpp/profiler.h | 3 ++- interop/src/cpp/types/koala-types.h | 14 +++++++++----- interop/src/cpp/vmloader.cc | 3 ++- 9 files changed, 46 insertions(+), 22 deletions(-) diff --git a/interop/src/cpp/DeserializerBase.h b/interop/src/cpp/DeserializerBase.h index 360ccaea66..d15af07525 100644 --- a/interop/src/cpp/DeserializerBase.h +++ b/interop/src/cpp/DeserializerBase.h @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -541,7 +542,9 @@ inline void WriteToString(std::string* result, InteropFloat32 value) result->append(buf); #else std::string storage; - storage.resize(20); + constexpr auto BUF_SIZE{20}; + static_assert(BUF_SIZE >= std::numeric_limits::max_digits10, "O-ou!"); + storage.resize(BUF_SIZE); // We use to_chars() to avoid locale issues. auto rc = std::to_chars(storage.data(), storage.data() + storage.size(), value); storage.resize(rc.ptr - storage.data()); @@ -558,7 +561,9 @@ inline void WriteToString(std::string* result, InteropFloat64 value) result->append(buf); #else std::string storage; - storage.resize(20); + constexpr auto BUF_SIZE{20}; + static_assert(BUF_SIZE >= std::numeric_limits::max_digits10, "O-ou!"); + storage.resize(BUF_SIZE); // We use to_chars() to avoid locale issues. auto rc = std::to_chars(storage.data(), storage.data() + storage.size(), value); storage.resize(rc.ptr - storage.data()); diff --git a/interop/src/cpp/SerializerBase.h b/interop/src/cpp/SerializerBase.h index 2b9e484e13..74e03c8803 100644 --- a/interop/src/cpp/SerializerBase.h +++ b/interop/src/cpp/SerializerBase.h @@ -79,7 +79,8 @@ public: SerializerBase(CallbackResourceHolder* resourceHolder = nullptr) : position(0), ownData(true), resourceHolder(resourceHolder) { - this->dataLength = 256; + constexpr auto DEFAULT_INITIAL_DATA_SIZE{256}; + this->dataLength = DEFAULT_INITIAL_DATA_SIZE; this->data = reinterpret_cast(malloc(this->dataLength)); if (!this->data) { INTEROP_FATAL("Cannot allocate memory"); @@ -119,7 +120,9 @@ public: { if (position + more > dataLength) { if (ownData) { - resize((position + more) * 3 / 2 + 2); + constexpr auto NUM_2{2}; + constexpr auto NUM_3{3}; + resize((position + more) * NUM_3 / NUM_2 + NUM_2); } else { INTEROP_FATAL("Buffer overrun: %d > %d\n", position + more, dataLength); } diff --git a/interop/src/cpp/jni/convertors-jni.cc b/interop/src/cpp/jni/convertors-jni.cc index 7918b9721d..a3a77268b1 100644 --- a/interop/src/cpp/jni/convertors-jni.cc +++ b/interop/src/cpp/jni/convertors-jni.cc @@ -34,9 +34,12 @@ static bool registerNatives( JNINativeMethod* methods = new JNINativeMethod[numMethods]; bool result = true; for (size_t i = 0; i < numMethods; i++) { - methods[i].name = (char*)std::get<0>(impls[i]).c_str(); - methods[i].signature = (char*)std::get<1>(impls[i]).c_str(); - methods[i].fnPtr = std::get<2>(impls[i]); + constexpr auto NUM_0{0}; + constexpr auto NUM_1{1}; + constexpr auto NUM_2{2}; + methods[i].name = (char*)std::get(impls[i]).c_str(); + methods[i].signature = (char*)std::get(impls[i]).c_str(); + methods[i].fnPtr = std::get(impls[i]); if (registerByOne) { result &= (env->RegisterNatives(clazz, methods + i, 1) >= 0); if (env->ExceptionCheck()) { diff --git a/interop/src/cpp/jsc/convertors-jsc.cc b/interop/src/cpp/jsc/convertors-jsc.cc index 98d3a994ef..0c0b56f140 100644 --- a/interop/src/cpp/jsc/convertors-jsc.cc +++ b/interop/src/cpp/jsc/convertors-jsc.cc @@ -156,12 +156,14 @@ static JSValueRef u64ToBigInt(JSContextRef context, uint64_t value) JSValueMakeNumber(context, (double)(value >> 32)), JSValueMakeNumber(context, (double)(value & 0xFFFFFFFF)), }; - bigint = JSObjectCallAsFunction(context, bigIntFromParts, nullptr, 2, parts, nullptr); + contexpr auto ARGUMENT_COUNT{sizeof(parts)/sizeof(parts[0])}; + bigint = JSObjectCallAsFunction(context, bigIntFromParts, nullptr, ARGUMENT_COUNT, parts, nullptr); #else char buffer[128] = { 0 }; interop_snprintf(buffer, sizeof(buffer) - 1, "%zun", static_cast(value)); JSStringRef script = JSStringCreateWithUTF8CString(buffer); - bigint = JSEvaluateScript(context, script, nullptr, nullptr, 0, nullptr); + contexpr auto ARGUMENT_COUNT{0}; + bigint = JSEvaluateScript(context, script, nullptr, nullptr, ARGUMENT_COUNT, nullptr); JSStringRelease(script); #endif return bigint; diff --git a/interop/src/cpp/napi/convertors-napi.h b/interop/src/cpp/napi/convertors-napi.h index 4b86ca1eb0..1e89c67429 100644 --- a/interop/src/cpp/napi/convertors-napi.h +++ b/interop/src/cpp/napi/convertors-napi.h @@ -205,14 +205,18 @@ struct InteropTypeConverter { inline napi_typedarray_type getNapiType(KInt size) { + constexpr auto NUM_1{1}; + constexpr auto NUM_2{2}; + constexpr auto NUM_3{3}; + constexpr auto NUM_4{4}; switch (size) { - case 1: + case NUM_1: return napi_uint8_array; - case 2: + case NUM_2: return napi_uint16_array; - case 4: + case NUM_4: return napi_uint32_array; - case 8: + case NUM_8: return napi_biguint64_array; default: break; diff --git a/interop/src/cpp/ohos/oh_sk_log.cc b/interop/src/cpp/ohos/oh_sk_log.cc index c17e605f76..254feea6b7 100644 --- a/interop/src/cpp/ohos/oh_sk_log.cc +++ b/interop/src/cpp/ohos/oh_sk_log.cc @@ -59,15 +59,16 @@ void oh_sk_file_log(oh_sk_log_type type, const char* msg, ...) size_t len = interop_strlen(KOALAUI_OHOS_LOG_ROOT) + 100; path = new char[len]; APPLY_LOG_FILE_PATTERN(path, len, lt, ms, getpid()); - mkdir(KOALAUI_OHOS_LOG_ROOT, 0777); + mkdir(KOALAUI_OHOS_LOG_ROOT, ACCESSPERMS); } std::unique_ptr file(fopen(path, "a"), fclose); if (!file) return; + constexpr auto US_IN_MS{1000}; fprintf(file.get(), "%02d-%02d %02d:%02d:%02d.%03lld %s koala: ", lt.tm_mon + 1, lt.tm_mday, lt.tm_hour, lt.tm_min, - lt.tm_sec, ms.tv_usec / 1000, oh_sk_log_type_str(type)); + lt.tm_sec, static_cast(ms.tv_usec / US_IN_MS), oh_sk_log_type_str(type)); va_list args; va_start(args, msg); diff --git a/interop/src/cpp/profiler.h b/interop/src/cpp/profiler.h index 2946c5d0ed..e97a0fe968 100644 --- a/interop/src/cpp/profiler.h +++ b/interop/src/cpp/profiler.h @@ -72,8 +72,9 @@ public: auto ns = a.second.time; auto count = a.second.count; char buffer[1024]; + constexpr auto PERCENT_100{100}; interop_snprintf(buffer, sizeof buffer, "for %s[%lld]: %.01f%% (%lld)\n", a.first.c_str(), - (long long)count, (double)ns / total * 100.0, (long long)ns); + (long long)count, (double)ns / total * PERCENT_100, (long long)ns); result += buffer; }); return result; diff --git a/interop/src/cpp/types/koala-types.h b/interop/src/cpp/types/koala-types.h index d9856c2a84..16a1dbdccf 100644 --- a/interop/src/cpp/types/koala-types.h +++ b/interop/src/cpp/types/koala-types.h @@ -105,19 +105,21 @@ struct KStringPtrImpl { return _length; } - void resize(int size) + void resize(int length) { - _length = size; + _length = length; if (!_owned) return; // Ignore old content. if (_value && _owned) free(_value); - _value = reinterpret_cast(malloc(size + 1)); + // G.MEM.01: Memory alloc size "length" should be checked. + auto memSize{static_cast(std::max(0, _length + 1))}; + _value = reinterpret_cast(malloc(memSize)); if (!_value) { INTEROP_FATAL("Cannot allocate memory"); } - _value[size] = 0; + _value[_length] = 0; } void assign(const char* data) @@ -131,7 +133,9 @@ struct KStringPtrImpl { free(_value); if (data) { if (_owned) { - _value = reinterpret_cast(malloc(length + 1)); + // G.MEM.01: Memory alloc size "length" should be checked. + auto memSize{static_cast(std::max(0, length + 1))}; + _value = reinterpret_cast(malloc(memSize)); if (!_value) { INTEROP_FATAL("Cannot allocate memory"); } diff --git a/interop/src/cpp/vmloader.cc b/interop/src/cpp/vmloader.cc index e9f002aa1b..e9693e89de 100644 --- a/interop/src/cpp/vmloader.cc +++ b/interop/src/cpp/vmloader.cc @@ -309,7 +309,8 @@ static bool ResetErrorIfExists(ani_env* env) std::string makeLibPath(const char* sdkPath, const char* platform, const char* lib) { std::string result; - result.reserve(255); + constexpr auto RESERVE_SIZE{255}; + result.reserve(RESERVE_SIZE); if (sdkPath) { result.append(sdkPath).append("/"); } -- Gitee From f1d768caf1dd51ffc4479c8681325d1719ac365c Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:16:24 +0300 Subject: [PATCH 07/17] Upd: Code-check: C=>C++ headers includes --- interop/src/cpp/ani/convertors-ani.cc | 2 +- interop/src/cpp/interop-logging.cc | 2 +- interop/src/cpp/ohos/hilog/log.h | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/interop/src/cpp/ani/convertors-ani.cc b/interop/src/cpp/ani/convertors-ani.cc index c9ece6e175..e84694d98e 100644 --- a/interop/src/cpp/ani/convertors-ani.cc +++ b/interop/src/cpp/ani/convertors-ani.cc @@ -15,7 +15,7 @@ #include "convertors-ani.h" #include -#include +#include #include "interop-types.h" #include "signatures.h" diff --git a/interop/src/cpp/interop-logging.cc b/interop/src/cpp/interop-logging.cc index 4fb30b9383..568ffe8708 100644 --- a/interop/src/cpp/interop-logging.cc +++ b/interop/src/cpp/interop-logging.cc @@ -14,7 +14,7 @@ */ #include "interop-logging.h" -#include +#include #include #include diff --git a/interop/src/cpp/ohos/hilog/log.h b/interop/src/cpp/ohos/hilog/log.h index 058d09e265..385385521a 100644 --- a/interop/src/cpp/ohos/hilog/log.h +++ b/interop/src/cpp/ohos/hilog/log.h @@ -58,8 +58,7 @@ * * @since 8 */ -#include -#include +#include #ifdef __cplusplus extern "C" { -- Gitee From b3102a00a6b7ab29446b8e863f122809a1d1e2ef Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:19:43 +0300 Subject: [PATCH 08/17] Upd: Code-check: rename __*** macroses (non-internal natation) --- interop/src/cpp/common-interop.cc | 7 ++----- interop/src/cpp/napi/convertors-napi.h | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/interop/src/cpp/common-interop.cc b/interop/src/cpp/common-interop.cc index b367d4f6d1..03abb75bd3 100644 --- a/interop/src/cpp/common-interop.cc +++ b/interop/src/cpp/common-interop.cc @@ -514,11 +514,8 @@ void impl_SetForeignVMContext(KNativePointer foreignVMContextRaw) } KOALA_INTEROP_V1(SetForeignVMContext, KNativePointer) -#ifndef __QUOTE -#define __QUOTE(x) #x -#endif - -#define QUOTE(x) __QUOTE(x) +#define QUOTE2(x) #x +#define QUOTE(x) QUOTE2(x) void impl_NativeLog(const KStringPtr& str) { diff --git a/interop/src/cpp/napi/convertors-napi.h b/interop/src/cpp/napi/convertors-napi.h index 1e89c67429..edfa1dcbb6 100644 --- a/interop/src/cpp/napi/convertors-napi.h +++ b/interop/src/cpp/napi/convertors-napi.h @@ -821,8 +821,8 @@ public: const std::vector>& getMethods(const std::string& module); }; -#define __QUOTE(x) #x -#define QUOTE(x) __QUOTE(x) +#define QUOTE2(x) #x +#define QUOTE(x) QUOTE2(x) #ifdef _MSC_VER #define MAKE_NODE_EXPORT(module, name) \ -- Gitee From dcc6db8f8b583b09c0a2baa392f4edba5738417e Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:20:36 +0300 Subject: [PATCH 09/17] Upd: Code-check: return string::c_str() --- interop/src/cpp/interop-logging.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interop/src/cpp/interop-logging.cc b/interop/src/cpp/interop-logging.cc index 568ffe8708..e4b471c273 100644 --- a/interop/src/cpp/interop-logging.cc +++ b/interop/src/cpp/interop-logging.cc @@ -59,7 +59,8 @@ void appendGroupedLog(int index, const char* str) const char* getGroupedLog(int index) { if (index < static_cast(groupedLogs.size())) { - return groupedLogs[index]->log.c_str(); + // G.STD.04-CPP: Do not hold pointer returned from std::string c_str() method. + return std::move(groupedLogs[index]->log.c_str()); } return ""; } -- Gitee From 582bc5e949b15868e387402393d677225dd7f8b5 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:22:18 +0300 Subject: [PATCH 10/17] Upd: Code-check: rename func args (which hide global ones) --- ui2abc/libarkts/gn/command/copy.py | 4 ++-- ui2abc/libarkts/native/src/common.cc | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ui2abc/libarkts/gn/command/copy.py b/ui2abc/libarkts/gn/command/copy.py index c42c37f146..ca0e1fc7a8 100755 --- a/ui2abc/libarkts/gn/command/copy.py +++ b/ui2abc/libarkts/gn/command/copy.py @@ -19,8 +19,8 @@ import shutil import subprocess import sys -def library_ext(os, cpu): - if (os == 'mingw' and cpu == 'x86_64'): +def library_ext(os_name, cpu_name): + if (os_name == 'mingw' and cpu_name == 'x86_64'): return 'dll' return 'node' diff --git a/ui2abc/libarkts/native/src/common.cc b/ui2abc/libarkts/native/src/common.cc index 87fa3b0b0e..eb73b6cedb 100644 --- a/ui2abc/libarkts/native/src/common.cc +++ b/ui2abc/libarkts/native/src/common.cc @@ -442,15 +442,15 @@ struct Pattern { return false; } - bool matchWildcard(const std::string& pattern, const char* value) + bool matchWildcard(const std::string& pattern, const char* valueArg) { if (pattern.find('*') == std::string::npos) { - return pattern == value; + return pattern == valueArg; } regex_t regex; regmatch_t match[1]; regcomp(®ex, pattern.c_str(), REG_NEWLINE); - return regexec(®ex, value, 1, match, 0) != REG_NOMATCH; + return regexec(®ex, valueArg, 1, match, 0) != REG_NOMATCH; } }; -- Gitee From 6d95f78d2197c09c3a63db98892f3532dc253736 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:23:21 +0300 Subject: [PATCH 11/17] Upd: Code-check: use static_cast(.) (for completeness only) --- interop/src/cpp/SerializerBase.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interop/src/cpp/SerializerBase.h b/interop/src/cpp/SerializerBase.h index 74e03c8803..5fea792ccf 100644 --- a/interop/src/cpp/SerializerBase.h +++ b/interop/src/cpp/SerializerBase.h @@ -251,7 +251,7 @@ public: void writeBuffer(InteropBuffer interopBuffer) { writeCallbackResource(interopBuffer.resource); - writePointer((void*)interopBuffer.data); + writePointer(static_cast(interopBuffer.data)); writeInt64(interopBuffer.length); } -- Gitee From e253a9faafb333537be5d60b6c99a5258241996c Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 15:41:22 +0300 Subject: [PATCH 12/17] Fix: of renamed "ets1.2/libarkts/rollup{.=>-}lib.mjs" --- ui2abc/libarkts/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui2abc/libarkts/package.json b/ui2abc/libarkts/package.json index 42578447a7..a79297c80e 100644 --- a/ui2abc/libarkts/package.json +++ b/ui2abc/libarkts/package.json @@ -60,7 +60,7 @@ "crosscompile:native": "npm run compile:koala:interop && npm run crosscompile:meson && npm run copy:.node", "compile": "npm run regenerate && npm run compile:native && npm run compile:js", "compile:release": "npm run regenerate && npm run crosscompile:native && npm run compile:js", - "compile:js": "rm -rf lib/ && rollup -c rollup.lib.mjs && rollup -c rollup.es2panda.mjs", + "compile:js": "rm -rf lib/ && rollup -c rollup-lib.mjs && rollup -c rollup.es2panda.mjs", "compile:plugins": "rollup -c ./rollup.printer-plugin.mjs", "direct": "fast-arktsc --config arktsconfig.json --compiler ../../incremental/tools/panda/arkts/ui2abc --link-name ./build/abc/main.abc && ninja -f build/abc/build.ninja", "simultaneous": "mkdir -p build/abc && bash ../../incremental/tools/panda/arkts/ui2abc --simultaneous --arktsconfig arktsconfig.json --output ./build/abc/main.abc:./build/abc/library.abc plugins/input/main.ets:plugins/input/library.ets", -- Gitee From b993dae6af94e1aed34d592286f0cb414a337612 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Wed, 10 Sep 2025 16:25:55 +0300 Subject: [PATCH 13/17] Fix: of renamed of some magic digits --- interop/src/cpp/napi/convertors-napi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interop/src/cpp/napi/convertors-napi.h b/interop/src/cpp/napi/convertors-napi.h index edfa1dcbb6..45f9ab142d 100644 --- a/interop/src/cpp/napi/convertors-napi.h +++ b/interop/src/cpp/napi/convertors-napi.h @@ -207,8 +207,8 @@ inline napi_typedarray_type getNapiType(KInt size) { constexpr auto NUM_1{1}; constexpr auto NUM_2{2}; - constexpr auto NUM_3{3}; constexpr auto NUM_4{4}; + constexpr auto NUM_8{8}; switch (size) { case NUM_1: return napi_uint8_array; -- Gitee From c8b87b768e8637cf013f950946ea0262c3239156 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Mon, 15 Sep 2025 12:53:36 +0300 Subject: [PATCH 14/17] Upd: Code-check: cosmetics (libarkts) --- ui2abc/libarkts/native/src/common.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ui2abc/libarkts/native/src/common.cc b/ui2abc/libarkts/native/src/common.cc index eb73b6cedb..c38e3f63b4 100644 --- a/ui2abc/libarkts/native/src/common.cc +++ b/ui2abc/libarkts/native/src/common.cc @@ -136,7 +136,7 @@ void impl_SetUpSoPath(KStringPtr& soPath) } KOALA_INTEROP_V1(SetUpSoPath, KStringPtr); -void* TryLibrary(const char* name) +void* TryLibrary(const char* name) { void* res = nullptr; std::vector pathArray; @@ -177,7 +177,6 @@ void* TryLibrary(const char* name) return nullptr; } -// TODO: @panda/sdk will be changed to match ohos-sdk void* FindLibrary() { void *res = nullptr; -- Gitee From 9843e0c4cfea90ac1b8c8f62e39ee9e162d80885 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Mon, 15 Sep 2025 12:55:10 +0300 Subject: [PATCH 15/17] Upd: Code-check: re-format (incremental) --- incremental/compat/src/typescript/strings.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/incremental/compat/src/typescript/strings.ts b/incremental/compat/src/typescript/strings.ts index e854d0bc1e..b793960aff 100644 --- a/incremental/compat/src/typescript/strings.ts +++ b/incremental/compat/src/typescript/strings.ts @@ -157,7 +157,9 @@ export class CustomTextDecoder { constructor( decoder: SystemTextDecoder | undefined = undefined ) { - if (!decoder && typeof TextDecoder != 'undefined') decoder = new TextDecoder() + if (!decoder && typeof TextDecoder != 'undefined') { + decoder = new TextDecoder() + } this.decoder = decoder; } -- Gitee From 29a28fb354f1d45c5443108b2405190f6637fc95 Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Mon, 15 Sep 2025 12:57:42 +0300 Subject: [PATCH 16/17] Upd: Code-check: name case (interop) --- interop/src/cpp/common-interop.cc | 18 +++++++++--------- interop/src/cpp/common-interop.h | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/interop/src/cpp/common-interop.cc b/interop/src/cpp/common-interop.cc index 03abb75bd3..669989fe22 100644 --- a/interop/src/cpp/common-interop.cc +++ b/interop/src/cpp/common-interop.cc @@ -274,7 +274,7 @@ typedef const char* (*EmitEvent_t)(const KInt type, const KInt target, const KIn typedef void (*RestartWith_t)(const char* page); typedef const char* (*LoadView_t)(const char* className, const char* params); -void* getImpl(const char* path, const char* name) +void* GetImpl(const char* path, const char* name) { static void* lib = nullptr; if (!lib && name) { @@ -303,7 +303,7 @@ KInt impl_LoadVirtualMachine(KVMContext vmContext, KInt vmKind, const KStringPtr static LoadVirtualMachine_t impl = nullptr; if (!impl) - impl = reinterpret_cast(getImpl(nativeLibPath, "LoadVirtualMachine")); + impl = reinterpret_cast(GetImpl(nativeLibPath, "LoadVirtualMachine")); if (!impl) KOALA_INTEROP_THROW_STRING(vmContext, "Cannot load VM", -1); const ForeignVMContext foreignVM = { vmContext, &callCallback }; @@ -315,7 +315,7 @@ KNativePointer impl_StartApplication(const KStringPtr& appUrl, const KStringPtr& { static StartApplication_t impl = nullptr; if (!impl) - impl = reinterpret_cast(getImpl(nullptr, "StartApplication")); + impl = reinterpret_cast(GetImpl(nullptr, "StartApplication")); return impl(appUrl.c_str(), appParams.c_str(), loopIterations); } KOALA_INTEROP_3(StartApplication, KNativePointer, KStringPtr, KStringPtr, KInt) @@ -324,7 +324,7 @@ KBoolean impl_RunApplication(const KInt arg0, const KInt arg1) { static RunApplication_t impl = nullptr; if (!impl) - impl = reinterpret_cast(getImpl(nullptr, "RunApplication")); + impl = reinterpret_cast(GetImpl(nullptr, "RunApplication")); return impl(arg0, arg1); } KOALA_INTEROP_2(RunApplication, KBoolean, KInt, KInt) @@ -333,7 +333,7 @@ KStringPtr impl_EmitEvent(KVMContext vmContext, KInt type, KInt target, KInt arg { static EmitEvent_t impl = nullptr; if (!impl) - impl = reinterpret_cast(getImpl(nullptr, "EmitEvent")); + impl = reinterpret_cast(GetImpl(nullptr, "EmitEvent")); const char* out = impl(type, target, arg0, arg1); auto size = std::string(out).size(); KStringPtr result(out, size, true); @@ -345,7 +345,7 @@ void impl_RestartWith(const KStringPtr& page) { static RestartWith_t impl = nullptr; if (!impl) - impl = reinterpret_cast(getImpl(nullptr, "RestartWith")); + impl = reinterpret_cast(GetImpl(nullptr, "RestartWith")); impl(page.c_str()); } KOALA_INTEROP_V1(RestartWith, KStringPtr) @@ -355,7 +355,7 @@ KStringPtr impl_LoadView(const KStringPtr& className, const KStringPtr& params) { static LoadView_t impl = nullptr; if (!impl) - impl = reinterpret_cast(getImpl(nullptr, "LoadView")); + impl = reinterpret_cast(GetImpl(nullptr, "LoadView")); const char* result = impl(className.c_str(), params.c_str()); return KStringPtr(result, interop_strlen(result), true); } @@ -445,7 +445,7 @@ static Callback_Caller_Sync_t g_callbackCallerSync[API_KIND_MAX] = { 0 }; if ((callbackCallers)[apiKind] != nullptr) \ INTEROP_FATAL("Callback caller for api kind %d already was set", apiKind); -void setCallbackCaller(int apiKind, Callback_Caller_t callbackCaller) +void SetCallbackCaller(int apiKind, Callback_Caller_t callbackCaller) { CHECK_HAS_NOT_CALLBACK_CALLER(apiKind, g_callbackCaller); g_callbackCaller[apiKind] = callbackCaller; @@ -458,7 +458,7 @@ void impl_CallCallback(KInt apiKind, KInt callbackKind, KSerializerBuffer args, } KOALA_INTEROP_V4(CallCallback, KInt, KInt, KSerializerBuffer, KInt) -void setCallbackCallerSync(int apiKind, Callback_Caller_Sync_t callbackCallerSync) +void SetCallbackCallerSync(int apiKind, Callback_Caller_Sync_t callbackCallerSync) { CHECK_HAS_NOT_CALLBACK_CALLER(apiKind, g_callbackCallerSync); g_callbackCallerSync[apiKind] = callbackCallerSync; diff --git a/interop/src/cpp/common-interop.h b/interop/src/cpp/common-interop.h index 3a5fa5cfcf..8ee05f4169 100644 --- a/interop/src/cpp/common-interop.h +++ b/interop/src/cpp/common-interop.h @@ -48,8 +48,8 @@ typedef void (*Callback_Caller_t)(KInt callbackKind, KSerializerBuffer argsData, KInt argsLength); typedef void (*Callback_Caller_Sync_t)( KVMContext vmContext, KInt callbackKind, KSerializerBuffer argsData, KInt argsLength); -extern "C" DLL_EXPORT void setCallbackCaller(int apiKind, Callback_Caller_t caller); -extern "C" DLL_EXPORT void setCallbackCallerSync(int apiKind, Callback_Caller_Sync_t callerSync); +extern "C" DLL_EXPORT void SetCallbackCaller(int apiKind, Callback_Caller_t caller); +extern "C" DLL_EXPORT void SetCallbackCallerSync(int apiKind, Callback_Caller_Sync_t callerSync); extern "C" DLL_EXPORT KVMDeferred* CreateDeferred(KVMContext context, KVMObjectHandle* promise); extern "C" DLL_EXPORT const InteropAsyncWorker* GetAsyncWorker(); -- Gitee From b0b90701e90ba9213a94faa6d5a2572a3730d22d Mon Sep 17 00:00:00 2001 From: "Alexander Ilyenko (WX1330152)" Date: Mon, 15 Sep 2025 12:59:43 +0300 Subject: [PATCH 17/17] Upd: Code-check: some updates (interop) --- interop/src/cpp/common-interop.cc | 4 ++-- interop/src/cpp/napi/convertors-napi.h | 27 +++++++++++++++++++++----- interop/src/cpp/types/koala-types.h | 20 +++++++++---------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/interop/src/cpp/common-interop.cc b/interop/src/cpp/common-interop.cc index 669989fe22..184dd8d7ee 100644 --- a/interop/src/cpp/common-interop.cc +++ b/interop/src/cpp/common-interop.cc @@ -798,8 +798,8 @@ KStringPtr impl_RawUtf8ToString(KVMContext vmContext, KNativePointer data) KOALA_INTEROP_CTX_1(RawUtf8ToString, KStringPtr, KNativePointer) #endif -#if defined(KOALA_NAPI) || defined(KOALA_JNI) || defined(KOALA_CJ) || defined(KOALA_ETS_NAPI) || defined(KOALA_ANI) || \ - defined(KOALA_KOTLIN) +#if defined(KOALA_NAPI) || defined(KOALA_JNI) || defined(KOALA_CJ) \ + || defined(KOALA_ETS_NAPI) || defined(KOALA_ANI) || defined(KOALA_KOTLIN) KStringPtr impl_StdStringToString(KVMContext vmContext, KNativePointer stringPtr) { std::string* string = reinterpret_cast(stringPtr); diff --git a/interop/src/cpp/napi/convertors-napi.h b/interop/src/cpp/napi/convertors-napi.h index 45f9ab142d..93b250fb66 100644 --- a/interop/src/cpp/napi/convertors-napi.h +++ b/interop/src/cpp/napi/convertors-napi.h @@ -266,7 +266,20 @@ struct InteropTypeConverter { } static size_t decodeLength(const uint8_t* data) { - return (data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0]; + // "le32toh(.)" is not standard, "htol" is not applicable (b.o. LE). + // So let's do it directly. + constexpr auto IDX_0 { 0}; + constexpr auto IDX_1 { 1}; + constexpr auto IDX_2 { 2}; + constexpr auto IDX_3 { 3}; + constexpr auto OFF__0{ 0}; + constexpr auto OFF__8{ 8}; + constexpr auto OFF_16{16}; + constexpr auto OFF_24{24}; + return (data[IDX_3] << NUM_24) + | (data[IDX_2] << NUM_16) + | (data[IDX_1] << NUM__8) + | (data[IDX_0] << NUM__0); } static KStringArray convertFrom(napi_env env, InteropType value) { @@ -276,11 +289,15 @@ struct InteropTypeConverter { return { { nullptr, nullptr }, 0 }; size_t const num = decodeLength(encoded); - KStringArray::Holder result(static_cast(malloc(sizeof(char*) * (num + 1))), &free); + auto memory = malloc(sizeof(char*) * (num + 1)); + if (nullptr == memory) { + napi_throw_error(env, nullptr, "Memory allocation failed"); + } + KStringArray::Holder result(static_cast(memory), &free); size_t count = 0; - auto const* ptr = encoded + LengthByteSize; - auto const* const end = encoded + bytes; + const auto* ptr = encoded + LengthByteSize; + const auto* const end = encoded + bytes; while (ptr < end) { auto length = decodeLength(ptr); result[count++] = SelfType::strndup(ptr + LengthByteSize, length); @@ -437,7 +454,7 @@ napi_valuetype getValueTypeChecked(napi_env env, napi_value value); bool isTypedArray(napi_env env, napi_value value); template -inline ElemType* getTypedElements(napi_env env, napi_value value, size_t& bytesLength) +ElemType* getTypedElements(napi_env env, napi_value value, size_t& bytesLength) { napi_valuetype valueType = getValueTypeChecked(env, value); if (valueType == napi_null) { diff --git a/interop/src/cpp/types/koala-types.h b/interop/src/cpp/types/koala-types.h index 16a1dbdccf..888708165b 100644 --- a/interop/src/cpp/types/koala-types.h +++ b/interop/src/cpp/types/koala-types.h @@ -166,32 +166,32 @@ private: struct KStringArrayImpl { // Null terminated, [char*, char*, ..., nullptr] - using Holder = std::unique_ptr; + using Holder = std::unique_ptr; KStringArrayImpl() : KStringArrayImpl({ nullptr, nullptr }, 0) {} - KStringArrayImpl(Holder strs, size_t num) : _holder(std::move(strs)), _num(num) {} + KStringArrayImpl(Holder strs, size_t num) : holder{std::move(strs)}, num{num} {} ~KStringArrayImpl() { - for (size_t k = 0; k < _num; k++) { - free(_holder[k]); + for (size_t k = 0; k < num; k++) { + free(holder[k]); } } - const char* const* get() const + const char* const * get() const { - return _holder.get(); + return holder.get(); } char** release() { - _num = 0; - return _holder.release(); + num = 0; + return holder.release(); } private: - Holder _holder; - size_t _num; + Holder holder; + size_t num; }; struct KInteropNumber { -- Gitee