Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party CJSON
提交
fc1d4b07
T
Third Party CJSON
项目概览
OpenHarmony
/
Third Party CJSON
11 个月 前同步成功
通知
4
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,体验更适合开发者的 AI 搜索 >>
提交
fc1d4b07
编写于
2月 18, 2017
作者:
M
Max Bruckner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ensure: if printbuffer is null: cJSON_malloc
This allowed for the removal of a lot of if (p) checks.
上级
bd073343
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
87 deletion
+36
-87
cJSON.c
cJSON.c
+36
-87
未找到文件。
cJSON.c
浏览文件 @
fc1d4b07
...
...
@@ -223,13 +223,18 @@ static unsigned char* ensure(printbuffer *p, size_t needed)
unsigned
char
*
newbuffer
=
NULL
;
size_t
newsize
=
0
;
if
(
p
==
NULL
)
{
return
(
unsigned
char
*
)
cJSON_malloc
(
needed
);
}
if
(
needed
>
INT_MAX
)
{
/* sizes bigger than INT_MAX are currently not supported */
return
NULL
;
}
if
(
!
p
||
!
p
->
buffer
)
if
(
p
->
buffer
==
NULL
)
{
return
NULL
;
}
...
...
@@ -299,15 +304,8 @@ static unsigned char *print_number(const cJSON *item, printbuffer *p)
/* special case for 0. */
if
(
d
==
0
)
{
if
(
p
)
{
str
=
ensure
(
p
,
2
);
}
else
{
str
=
(
unsigned
char
*
)
cJSON_malloc
(
2
);
}
if
(
str
)
str
=
ensure
(
p
,
2
);
if
(
str
!=
NULL
)
{
strcpy
((
char
*
)
str
,
"0"
);
}
...
...
@@ -315,16 +313,9 @@ static unsigned char *print_number(const cJSON *item, printbuffer *p)
/* value is an int */
else
if
((
fabs
(((
double
)
item
->
valueint
)
-
d
)
<=
DBL_EPSILON
)
&&
(
d
<=
INT_MAX
)
&&
(
d
>=
INT_MIN
))
{
if
(
p
)
{
str
=
ensure
(
p
,
21
);
}
else
{
/* 2^64+1 can be represented in 21 chars. */
str
=
(
unsigned
char
*
)
cJSON_malloc
(
21
);
}
if
(
str
)
str
=
ensure
(
p
,
21
);
if
(
str
!=
NULL
)
{
sprintf
((
char
*
)
str
,
"%d"
,
item
->
valueint
);
}
...
...
@@ -332,17 +323,9 @@ static unsigned char *print_number(const cJSON *item, printbuffer *p)
/* value is a floating point number */
else
{
if
(
p
)
{
/* This is a nice tradeoff. */
str
=
ensure
(
p
,
64
);
}
else
{
/* This is a nice tradeoff. */
str
=
(
unsigned
char
*
)
cJSON_malloc
(
64
);
}
if
(
str
)
/* This is a nice tradeoff. */
str
=
ensure
(
p
,
64
);
if
(
str
!=
NULL
)
{
/* This checks for NaN and Infinity */
if
((
d
*
0
)
!=
0
)
...
...
@@ -671,15 +654,8 @@ static unsigned char *print_string_ptr(const unsigned char *str, printbuffer *p)
/* empty string */
if
(
!
str
)
{
if
(
p
)
{
out
=
ensure
(
p
,
3
);
}
else
{
out
=
(
unsigned
char
*
)
cJSON_malloc
(
3
);
}
if
(
!
out
)
out
=
ensure
(
p
,
3
);
if
(
out
==
NULL
)
{
return
NULL
;
}
...
...
@@ -701,15 +677,9 @@ static unsigned char *print_string_ptr(const unsigned char *str, printbuffer *p)
if
(
!
flag
)
{
len
=
(
size_t
)(
ptr
-
str
);
if
(
p
)
{
out
=
ensure
(
p
,
len
+
3
);
}
else
{
out
=
(
unsigned
char
*
)
cJSON_malloc
(
len
+
3
);
}
if
(
!
out
)
out
=
ensure
(
p
,
len
+
3
);
if
(
out
==
NULL
)
{
return
NULL
;
}
...
...
@@ -739,15 +709,8 @@ static unsigned char *print_string_ptr(const unsigned char *str, printbuffer *p)
ptr
++
;
}
if
(
p
)
{
out
=
ensure
(
p
,
len
+
3
);
}
else
{
out
=
(
unsigned
char
*
)
cJSON_malloc
(
len
+
3
);
}
if
(
!
out
)
out
=
ensure
(
p
,
len
+
3
);
if
(
out
==
NULL
)
{
return
NULL
;
}
...
...
@@ -993,21 +956,21 @@ static unsigned char *print_value(const cJSON *item, size_t depth, cjbool fmt, p
{
case
cJSON_NULL
:
out
=
ensure
(
p
,
5
);
if
(
out
)
if
(
out
!=
NULL
)
{
strcpy
((
char
*
)
out
,
"null"
);
}
break
;
case
cJSON_False
:
out
=
ensure
(
p
,
6
);
if
(
out
)
if
(
out
!=
NULL
)
{
strcpy
((
char
*
)
out
,
"false"
);
}
break
;
case
cJSON_True
:
out
=
ensure
(
p
,
5
);
if
(
out
)
if
(
out
!=
NULL
)
{
strcpy
((
char
*
)
out
,
"true"
);
}
...
...
@@ -1030,7 +993,7 @@ static unsigned char *print_value(const cJSON *item, size_t depth, cjbool fmt, p
raw_length
=
strlen
(
item
->
valuestring
)
+
sizeof
(
'\0'
);
out
=
ensure
(
p
,
raw_length
);
if
(
out
)
if
(
out
!=
NULL
)
{
memcpy
(
out
,
item
->
valuestring
,
raw_length
);
}
...
...
@@ -1189,15 +1152,8 @@ static unsigned char *print_array(const cJSON *item, size_t depth, cjbool fmt, p
/* Explicitly handle numentries == 0 */
if
(
!
numentries
)
{
if
(
p
)
{
out
=
ensure
(
p
,
3
);
}
else
{
out
=
(
unsigned
char
*
)
cJSON_malloc
(
3
);
}
if
(
out
)
out
=
ensure
(
p
,
3
);
if
(
out
!=
NULL
)
{
strcpy
((
char
*
)
out
,
"[]"
);
}
...
...
@@ -1211,7 +1167,7 @@ static unsigned char *print_array(const cJSON *item, size_t depth, cjbool fmt, p
/* opening square bracket */
i
=
p
->
offset
;
ptr
=
ensure
(
p
,
1
);
if
(
!
ptr
)
if
(
ptr
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1230,7 +1186,7 @@ static unsigned char *print_array(const cJSON *item, size_t depth, cjbool fmt, p
{
len
=
fmt
?
2
:
1
;
ptr
=
ensure
(
p
,
len
+
1
);
if
(
!
ptr
)
if
(
ptr
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1245,7 +1201,7 @@ static unsigned char *print_array(const cJSON *item, size_t depth, cjbool fmt, p
child
=
child
->
next
;
}
ptr
=
ensure
(
p
,
2
);
if
(
!
ptr
)
if
(
ptr
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1456,15 +1412,8 @@ static unsigned char *print_object(const cJSON *item, size_t depth, cjbool fmt,
/* Explicitly handle empty object case */
if
(
!
numentries
)
{
if
(
p
)
{
out
=
ensure
(
p
,
fmt
?
depth
+
4
:
3
);
}
else
{
out
=
(
unsigned
char
*
)
cJSON_malloc
(
fmt
?
depth
+
4
:
3
);
}
if
(
!
out
)
out
=
ensure
(
p
,
fmt
?
depth
+
4
:
3
);
if
(
out
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1489,7 +1438,7 @@ static unsigned char *print_object(const cJSON *item, size_t depth, cjbool fmt,
i
=
p
->
offset
;
len
=
fmt
?
2
:
1
;
/* fmt: {\n */
ptr
=
ensure
(
p
,
len
+
1
);
if
(
!
ptr
)
if
(
ptr
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1509,7 +1458,7 @@ static unsigned char *print_object(const cJSON *item, size_t depth, cjbool fmt,
if
(
fmt
)
{
ptr
=
ensure
(
p
,
depth
);
if
(
!
ptr
)
if
(
ptr
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1529,7 +1478,7 @@ static unsigned char *print_object(const cJSON *item, size_t depth, cjbool fmt,
len
=
fmt
?
2
:
1
;
ptr
=
ensure
(
p
,
len
);
if
(
!
ptr
)
if
(
ptr
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1550,7 +1499,7 @@ static unsigned char *print_object(const cJSON *item, size_t depth, cjbool fmt,
/* print comma if not last */
len
=
(
size_t
)
(
fmt
?
1
:
0
)
+
(
child
->
next
?
1
:
0
);
ptr
=
ensure
(
p
,
len
+
1
);
if
(
!
ptr
)
if
(
ptr
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1570,7 +1519,7 @@ static unsigned char *print_object(const cJSON *item, size_t depth, cjbool fmt,
}
ptr
=
ensure
(
p
,
fmt
?
(
depth
+
1
)
:
2
);
if
(
!
ptr
)
if
(
ptr
==
NULL
)
{
return
NULL
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录