Merge "[Bugfix][T106BUG-508]fix get temp error"
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-thermal/src/lynq_qser_thermal.c b/cap/zx297520v3/src/lynq/lib/liblynq-qser-thermal/src/lynq_qser_thermal.c
index 30114f0..acf7e24 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-thermal/src/lynq_qser_thermal.c
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-thermal/src/lynq_qser_thermal.c
@@ -1,23 +1,46 @@
 #include <stdio.h>

+#include <stdbool.h>

+#include <stdlib.h>

 #include "lynq_qser_thermal.h"

 

+#define MAX_SIZE 100

 

 void parseBuffer(const char *buf, int *numbers, int *count) {
     int i = 0;

-    
-    while (buf[i] != '\0') {
-        while (buf[i] == ' ' || buf[i] == '\n') {
+    *count = 0;

+
+    while (buf[i] != '\0' && *count < MAX_SIZE) {

+        while (buf[i] != '\0' && (buf[i] < '0' || buf[i] > '9') && buf[i] != '-' && buf[i] != '+') {

+            ++i;

+        }

+

+        bool negative = false;

+        if (buf[i] == '-') {
+            negative = true;

+            ++i;

+        } else if (buf[i] == '+') {
             ++i;
         }
 

         int num = 0;

 
-        while (buf[i] >= '0' && buf[i] <= '9') {
+        while (buf[i] != '\0' && buf[i] >= '0' && buf[i] <= '9') {
             num = num * 10 + (buf[i] - '0');
             ++i;
         }
 
-        numbers[(*count)++] = num;
+        if (negative) {

+            num = -num;

+        }

+

+

+        if (*count < MAX_SIZE) {

+            numbers[(*count)++] = num;
+        }

+

+        while (buf[i] != '\0' && (buf[i] >= '0' && buf[i] <= '9')) {

+            ++i;

+        }

     }
 }
 

@@ -27,7 +50,7 @@
     int ch;

     char buf[MAX_SIZE];

     int i = 0;

-    int count = 0;

+

 

     if(NULL == numbers ){

         printf("Error para\n");

@@ -55,6 +78,7 @@
     buf[i] = '\0';

     fclose(file);

 

+    int count = 0;

     parseBuffer(buf, numbers, &count);

 

     return count;