Просмотр исходного кода

fix: 创建string对象时没有判断参数可能为NULL

RyanCW 1 год назад
Родитель
Сommit
a8f84ffb47
1 измененных файлов с 7 добавлено и 1 удалено
  1. 7 1
      RyanJson/RyanJson.c

+ 7 - 1
RyanJson/RyanJson.c

@@ -873,15 +873,18 @@ static RyanJsonBool RyanJsonPrintNumber(RyanJson_t pJson, printBuffer *buf)
 
         f = RyanJsonGetDoubleValue(pJson);
 
+        // use full transformation within bounded space
         if (fabs(floor(f) - f) <= DBL_EPSILON && fabs(f) < 1.0e60)
             len = sprintf(printBufEnd(buf), "%.1lf", f);
 
+        // use exponential form conversion beyond the limited range
         else if (fabs(f) < 1.0e-6 || fabs(f) > 1.0e9)
             len = sprintf(printBufEnd(buf), "%e", f);
+
+        // default conversion
         else
         {
             len = sprintf(printBufEnd(buf), "%lf", f);
-
             while (len > 0 && printBufEnd(buf)[len - 1] == '0' && printBufEnd(buf)[len - 2] != '.') // 删除小数部分中无效的 0
                 len--;
         }
@@ -1922,6 +1925,9 @@ RyanJson_t RyanJsonCreateString(char *key, const char *string)
     char *k = NULL;
     char *s = NULL;
 
+    if (NULL == string)
+        return NULL;
+
     if (NULL != key)
     {
         k = RyanJsonStrdup(key);