Explorar o código

cJSON null造成的bug;

Jeff %!s(int64=5) %!d(string=hai) anos
pai
achega
ee0a528a30
Modificáronse 1 ficheiros con 19 adicións e 1 borrados
  1. 19 1
      scbc.tools/scbc.tools/SDK.cpp

+ 19 - 1
scbc.tools/scbc.tools/SDK.cpp

@@ -9,6 +9,23 @@
 ThreadSection g_csTask;
 std::list<STMid> CSDK::m_vtMidTask;
 std::string CSDK::_host;
+#define _GET_JSON_STRING(ptr, name, value) \
+	if( cJSON_GetObjectItem(ptr, name) )\
+		if ( cJSON_GetObjectItem(ptr, name)->valuestring == NULL)\
+			value = "";\
+		else\
+			value = cJSON_GetObjectItem(ptr, name)->valuestring;\
+	else\
+		value = "";
+
+#define _GET_JSON_INT(ptr, name, value) \
+	if( cJSON_GetObjectItem(ptr, name) )\
+	if ( cJSON_GetObjectItem(ptr, name)->valueint == NULL)\
+	value = 0;\
+		else\
+		value = cJSON_GetObjectItem(ptr, name)->valueint;\
+	else\
+	value = 0;
 
 CSDK::CSDK(void):
 m_hDownloadEvent(NULL),
@@ -398,7 +415,8 @@ int CSDK::GetMidInfo(std::string order, STMid &mid)
 		mid.pmd5 = cJSON_GetObjectItem(pData, _T("packet_md5")) ? cJSON_GetObjectItem(pData, _T("packet_md5"))->valuestring : "";
 		mid.ctype = cJSON_GetObjectItem(pData, _T("client_type")) ? cJSON_GetObjectItem(pData, _T("client_type"))->valuestring : "";
 		mid.pid = cJSON_GetObjectItem(pData, _T("project_id")) ? cJSON_GetObjectItem(pData, _T("project_id"))->valuestring : "";
-		mid.purl = cJSON_GetObjectItem(pData, _T("packet_url")) ? cJSON_GetObjectItem(pData, _T("packet_url"))->valuestring : "";
+		//mid.purl = cJSON_GetObjectItem(pData, _T("packet_url")) ? cJSON_GetObjectItem(pData, _T("packet_url"))->valuestring : "";
+		_GET_JSON_STRING(pData, _T("packet_url"), mid.purl);
 		//mid.psize = cJSON_GetObjectItem(pData, _T("packet_size")) ? cJSON_GetObjectItem(pData, _T("packet_size"))->valuestring : "";
 		memset(szData, 0, 10);
 		_itoa_s(cJSON_GetObjectItem(pData, _T("packet_size")) ? cJSON_GetObjectItem(pData, _T("packet_size"))->valueint : 0, szData, 10);