Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party CJSON
提交
609bb754
T
Third Party CJSON
项目概览
OpenHarmony
/
Third Party CJSON
大约 1 年 前同步成功
通知
6
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party CJSON
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
609bb754
编写于
4月 12, 2017
作者:
M
Max Bruckner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cJSON_Utils: Use cJSON_free and cJSON_malloc
上级
b759ff38
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
13 addition
and
13 deletion
+13
-13
cJSON_Utils.c
cJSON_Utils.c
+13
-13
未找到文件。
cJSON_Utils.c
浏览文件 @
609bb754
...
...
@@ -36,7 +36,7 @@ static unsigned char* cJSONUtils_strdup(const unsigned char* str)
unsigned
char
*
copy
=
NULL
;
len
=
strlen
((
const
char
*
)
str
)
+
1
;
if
(
!
(
copy
=
(
unsigned
char
*
)
malloc
(
len
)))
if
(
!
(
copy
=
(
unsigned
char
*
)
cJSON_
malloc
(
len
)))
{
return
NULL
;
}
...
...
@@ -159,33 +159,33 @@ CJSON_PUBLIC(char *) cJSONUtils_FindPointerFromObjectTo(cJSON *object, cJSON *ta
if
(
cJSON_IsArray
(
object
))
{
/* reserve enough memory for a 64 bit integer + '/' and '\0' */
unsigned
char
*
ret
=
(
unsigned
char
*
)
malloc
(
strlen
((
char
*
)
found
)
+
23
);
unsigned
char
*
ret
=
(
unsigned
char
*
)
cJSON_
malloc
(
strlen
((
char
*
)
found
)
+
23
);
/* check if conversion to unsigned long is valid
* This should be eliminated at compile time by dead code elimination
* if size_t is an alias of unsigned long, or if it is bigger */
if
(
c
>
ULONG_MAX
)
{
free
(
found
);
cJSON_
free
(
found
);
return
NULL
;
}
sprintf
((
char
*
)
ret
,
"/%lu%s"
,
(
unsigned
long
)
c
,
found
);
/* /<array_index><path> */
free
(
found
);
cJSON_
free
(
found
);
return
(
char
*
)
ret
;
}
else
if
(
cJSON_IsObject
(
object
))
{
unsigned
char
*
ret
=
(
unsigned
char
*
)
malloc
(
strlen
((
char
*
)
found
)
+
cJSONUtils_PointerEncodedstrlen
((
unsigned
char
*
)
obj
->
string
)
+
2
);
unsigned
char
*
ret
=
(
unsigned
char
*
)
cJSON_
malloc
(
strlen
((
char
*
)
found
)
+
cJSONUtils_PointerEncodedstrlen
((
unsigned
char
*
)
obj
->
string
)
+
2
);
*
ret
=
'/'
;
cJSONUtils_PointerEncodedstrcpy
(
ret
+
1
,
(
unsigned
char
*
)
obj
->
string
);
strcat
((
char
*
)
ret
,
(
char
*
)
found
);
free
(
found
);
cJSON_
free
(
found
);
return
(
char
*
)
ret
;
}
/* reached leaf of the tree, found nothing */
free
(
found
);
cJSON_
free
(
found
);
return
NULL
;
}
}
...
...
@@ -342,7 +342,7 @@ static cJSON *cJSONUtils_PatchDetach(cJSON *object, const unsigned char *path)
childptr
=
(
unsigned
char
*
)
strrchr
((
char
*
)
parentptr
,
'/'
);
/* last '/' */
if
(
childptr
==
NULL
)
{
free
(
parentptr
);
cJSON_
free
(
parentptr
);
return
NULL
;
}
/* split strings */
...
...
@@ -361,7 +361,7 @@ static cJSON *cJSONUtils_PatchDetach(cJSON *object, const unsigned char *path)
size_t
index
=
0
;
if
(
!
decode_array_index_from_pointer
(
childptr
,
&
index
))
{
free
(
parentptr
);
cJSON_
free
(
parentptr
);
return
NULL
;
}
ret
=
detach_item_from_array
(
parent
,
index
);
...
...
@@ -370,7 +370,7 @@ static cJSON *cJSONUtils_PatchDetach(cJSON *object, const unsigned char *path)
{
ret
=
cJSON_DetachItemFromObject
(
parent
,
(
char
*
)
childptr
);
}
free
(
parentptr
);
cJSON_
free
(
parentptr
);
/* return the detachted item */
return
ret
;
...
...
@@ -753,7 +753,7 @@ static void cJSONUtils_GeneratePatch(cJSON *patches, const unsigned char *op, co
cJSON_AddItemToObject
(
patch
,
"op"
,
cJSON_CreateString
((
const
char
*
)
op
));
if
(
suffix
)
{
unsigned
char
*
newpath
=
(
unsigned
char
*
)
malloc
(
strlen
((
const
char
*
)
path
)
+
cJSONUtils_PointerEncodedstrlen
(
suffix
)
+
2
);
unsigned
char
*
newpath
=
(
unsigned
char
*
)
cJSON_
malloc
(
strlen
((
const
char
*
)
path
)
+
cJSONUtils_PointerEncodedstrlen
(
suffix
)
+
2
);
cJSONUtils_PointerEncodedstrcpy
(
newpath
+
sprintf
((
char
*
)
newpath
,
"%s/"
,
(
const
char
*
)
path
),
suffix
);
cJSON_AddItemToObject
(
patch
,
"path"
,
cJSON_CreateString
((
const
char
*
)
newpath
));
free
(
newpath
);
...
...
@@ -806,7 +806,7 @@ static void cJSONUtils_CompareToPatch(cJSON *patches, const unsigned char *path,
case
cJSON_Array
:
{
size_t
c
=
0
;
unsigned
char
*
newpath
=
(
unsigned
char
*
)
malloc
(
strlen
((
const
char
*
)
path
)
+
23
);
/* Allow space for 64bit int. */
unsigned
char
*
newpath
=
(
unsigned
char
*
)
cJSON_
malloc
(
strlen
((
const
char
*
)
path
)
+
23
);
/* Allow space for 64bit int. */
/* generate patches for all array elements that exist in "from" and "to" */
for
((
void
)(
c
=
0
),
(
void
)(
from
=
from
->
child
),
to
=
to
->
child
;
from
&&
to
;
(
void
)(
from
=
from
->
next
),
(
void
)(
to
=
to
->
next
),
c
++
)
{
...
...
@@ -860,7 +860,7 @@ static void cJSONUtils_CompareToPatch(cJSON *patches, const unsigned char *path,
if
(
!
diff
)
{
/* both object keys are the same */
unsigned
char
*
newpath
=
(
unsigned
char
*
)
malloc
(
strlen
((
const
char
*
)
path
)
+
cJSONUtils_PointerEncodedstrlen
((
unsigned
char
*
)
a
->
string
)
+
2
);
unsigned
char
*
newpath
=
(
unsigned
char
*
)
cJSON_
malloc
(
strlen
((
const
char
*
)
path
)
+
cJSONUtils_PointerEncodedstrlen
((
unsigned
char
*
)
a
->
string
)
+
2
);
cJSONUtils_PointerEncodedstrcpy
(
newpath
+
sprintf
((
char
*
)
newpath
,
"%s/"
,
path
),
(
unsigned
char
*
)
a
->
string
);
/* create a patch for the element */
cJSONUtils_CompareToPatch
(
patches
,
newpath
,
a
,
b
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录