Merged
修复异常场景抛异常而非空串问题 #5911
xiatianAdd on 24 days ago
修复异常场景抛异常而非空串问题 #5911
Merged
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()) { |
| 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]); |
【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 团队确认空指针处理方式。