Merged
修复异常场景抛异常而非空串问题 #5911
修复异常场景抛异常而非空串问题 #5911
Merged
xiatianAdd on 24 days ago
Total: 1 files changed+1-1
@@ -678,7 +678,7 @@ static bool MallocCStringArray(char** value, const std::vector<std::string>& val
678{678{
679 for (size_t i = 0; i < valueStrArray.size(); i++) {679 for (size_t i = 0; i < valueStrArray.size(); i++) {
680 value[i] = Utils::MallocCString(valueStrArray[i]);680 value[i] = Utils::MallocCString(valueStrArray[i]);
681- if (value[i] == nullptr) {681+ if (value[i] == nullptr && !valueStrArray[i].empty()) {
姚星宇
姚星宇姚星宇15 days ago

【AI告警检视】中 image_ffi.cpp:681\n\n当 valueStrArray[i] 为空串且 MallocCString 返回 nullptr 时,value[i] 保持 nullptr,函数返回 true(成功)。输出 char** 数组中存在 nullptr 条目,若 CJ FFI 层未对 nullptr 做空检查则可能导致空指针解引用崩溃。\n\n将条件从 if (value[i] == nullptr) 改为 if (value[i] == nullptr && !valueStrArray[i].empty())。空串场景下 MallocCString 返回 nullptr 不再触发错误返回。调用方 FfiImageImageSourceImplGetImageProperties 在 MallocCStringArray 返回 true 后直接返回 SUCCESS,不检查数组内是否有 nullptr。\n\n建议:\n- 建议对空串场景显式分配 1 字节空字符串 value[i] = strdup(""),确保所有条目非 nullptr;或与 CJ FFI 团队确认空指针处理方式。

likedislike
682 IMAGE_LOGE("[ImageSource] MallocCString failed at index %{public}zu", i);682 IMAGE_LOGE("[ImageSource] MallocCString failed at index %{public}zu", i);
683 for (size_t j = 0; j < i; j++) {683 for (size_t j = 0; j < i; j++) {
684 free(value[j]);684 free(value[j]);