Index: /trunk/ChangeLog
===================================================================
--- /trunk/ChangeLog	(revision 887)
+++ /trunk/ChangeLog	(revision 891)
@@ -9,4 +9,5 @@
  * reduce memory usage by caching 1 for multiple same content files
  * correct __FILE__ __DIR__ supported for hardlinked files
+ * fixed #275: one line struct definition was confusing struct parser
  * fixed #102: segv when var cacher is too small
  * fixed #55: segv php tokenizer on certain special situation
Index: /trunk/mkstructinfo.awk
===================================================================
--- /trunk/mkstructinfo.awk	(revision 837)
+++ /trunk/mkstructinfo.awk	(revision 891)
@@ -10,4 +10,18 @@
 	printf "define(`COUNTOF_%s', `%s')\n", structname, COUNTOF[structname];
 	printf "define(`SIZEOF_%s', `(  %s  )')\n", structname, SIZEOF[structname];
+}
+function countBrace(text,  len, i, char, braceCount) {
+	len = length(text);
+	braceCount = 0;
+	for (i = 1; i <= len; ++i) {
+		char = substr(text, i, 1);
+		if (char == "{") {
+			braceCount = braceCount + 1;
+		}
+		else if (char == "}") {
+			braceCount = braceCount - 1;
+		}
+	}
+	return braceCount;
 }
 
@@ -76,9 +90,6 @@
 }
 
-/.\{/ {
-	brace = brace + 1;
-}
-/.}/ {
-	brace = brace - 1;
+/.[{}]/ {
+	brace += countBrace($0);
 }
 
@@ -170,12 +181,32 @@
 }
 /^typedef struct .*\{[^}]*$/ {
-	brace = 1;
-	instruct = 1;
-	next;
-}
-
-/^struct .*\{/ {
-	instruct = $2;
-	brace = 1;
-	next;
-}
+	brace = countBrace($0);
+	if (brace > 0) {
+		instruct = 1;
+	}
+	else {
+		brace = 0;
+		instruct = 0;
+	}
+
+	for (i in buffer) {
+		delete buffer[i];
+	}
+	next;
+}
+
+/^struct .*\{.*/ {
+	brace = countBrace($0);
+	if (brace > 0) {
+		instruct = $2;
+	}
+	else {
+		brace = 0;
+		instruct = 0;
+	}
+
+	for (i in buffer) {
+		delete buffer[i];
+	}
+	next;
+}
