Commits

Yaroslav Stavnichiy committed 3db7212

Bug fixed. Thanks Lev Walkin (lionet).

Comments (0)

Files changed (4)

   return 0;
 }
 
+static char* skip_block_comment(char* p) {
+  // assume p[-2]=='/' && p[-1]=='*'
+  char* ps=p-2;
+  if (!*p) {
+    NX_JSON_REPORT_ERROR("endless comment", ps);
+    return 0;
+  }
+  REPEAT:
+  p=strchr(p+1, '/');
+  if (!p) {
+    NX_JSON_REPORT_ERROR("endless comment", ps);
+    return 0;
+  }
+  if (p[-1]!='*') goto REPEAT;
+  return p+1;
+}
+
 static char* parse_key(const char** key, char* p) {
   // on '}' return with *p=='}'
   char c;
         p++;
       }
       else if (*p=='*') { // block comment
-        char* ps=p-1;
-        REPEAT:
-        p=strchr(p+1, '/');
-        if (!p) {
-          NX_JSON_REPORT_ERROR("endless comment", ps);
-          return 0; // error
-        }
-        if (p[-1]!='*') {
-          goto REPEAT;
-        }
-        p++;
+        p=skip_block_comment(p+1);
+        if (!p) return 0;
       }
       else {
         NX_JSON_REPORT_ERROR("unexpected chars", p-1);
           p++;
         }
         else if (p[1]=='*') { // block comment
-          char* ps=p;
-          p++;
-          REPEAT:
-          p=strchr(p+1, '/');
-          if (!p) {
-            NX_JSON_REPORT_ERROR("endless comment", ps);
-            return 0; // error
-          }
-          if (p[-1]!='*') {
-            goto REPEAT;
-          }
-          p++;
+          p=skip_block_comment(p+2);
+          if (!p) return 0;
         }
         else {
           NX_JSON_REPORT_ERROR("unexpected chars", p);

tests/045.expected

+123
+/*/\*/ 123
+/*/ 123
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.