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+");