修复电话通话记录异常BUG
authorhcj <1224667075@qq.com>
Wed, 3 Sep 2025 07:24:49 +0000 (15:24 +0800)
committerhcj <1224667075@qq.com>
Wed, 3 Sep 2025 07:24:49 +0000 (15:24 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/phoneservice/src/PhoneService.cpp

index d986c2f..6216bc9 100644 (file)
@@ -1055,33 +1055,35 @@ int GetCallLog(CallLogInfo **info, int *num)
 
     int number = fileSize / sizeof(CallLogInfo);
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fileSize:%d, number:%d", fileSize, number);
-CallLogInfo *callInfo = new CallLogInfo[number];
+
+    for(int i=0;i<number;i++)
+    {
+        CallLogInfo *callInfo = (CallLogInfo *)OHOS::UIMalloc( sizeof(CallLogInfo));
         if (callInfo == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] new callInfo fail!");
-            *info = nullptr;
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] malloc callInfo fail!");
+            info[i] = nullptr;
             *num = 0;
             fclose(fp);
             return OHOS_FAILURE;
         }
-        (void)memset_s(callInfo, fileSize, 0, fileSize);
+        (void)memset_s(callInfo,  sizeof(CallLogInfo), 0,  sizeof(CallLogInfo));
 
-        int ret = fread(callInfo, sizeof(CallLogInfo), number, fp);
-if (ret != number) {
+        int ret = fread(callInfo, sizeof(CallLogInfo), 1, fp);
+
+        if (ret != 1) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fread fp fail ret:%d", ret);
-        delete[] callInfo;
-        *info = nullptr;
+        info[i] = nullptr;
         *num = 0;
         fclose(fp);
         return OHOS_FAILURE;
         }
-        
-    *info = callInfo;
-        *num = number;
+        info[i] = callInfo;
+    }
+    *num = number;
     fclose(fp);
     return OHOS_SUCCESS;
 }
 
-
 int SaveCallLog(CallLogInfo **info,int num)
 {
     FILE *fp = fopen(CALL_LOG_PATH, "wb+");