aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/runtime.js5
-rwxr-xr-xtests/runner.py13
2 files changed, 17 insertions, 1 deletions
diff --git a/src/runtime.js b/src/runtime.js
index 6defbb35..816d864f 100644
--- a/src/runtime.js
+++ b/src/runtime.js
@@ -280,7 +280,10 @@ var Runtime = {
offset = offset || 0;
type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName];
if (!type) return null;
- assert(type.fields.length === struct.length, 'Number of named fields must match the type for ' + typeName);
+ if (type.fields.length != struct.length) {
+ printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo');
+ return null;
+ }
alignment = type.flatIndexes;
} else {
var type = { fields: struct.map(function(item) { return item[0] }) };
diff --git a/tests/runner.py b/tests/runner.py
index 26110b59..39091474 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -5143,6 +5143,19 @@ int main(int argc, char **argv) {
}
'''
self.do_run(src, 'value:10')
+
+ def test_fakestat(self):
+ src = r'''
+ #include <stdio.h>
+ struct stat { int x, y; };
+ int main() {
+ stat s;
+ s.x = 10;
+ s.y = 22;
+ printf("*%d,%d*\n", s.x, s.y);
+ }
+ '''
+ self.do_run(src, '*10,22*')
def test_mmap(self):
src = '''