aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parser.js3
-rw-r--r--tests/runner.py4
2 files changed, 6 insertions, 1 deletions
diff --git a/src/parser.js b/src/parser.js
index 9908b0a5..31c29ae1 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -34,6 +34,7 @@ function removePointing(type, num) {
}
function pointingLevels(type) {
+ if (!type) return 0;
var ret = 0;
var len1 = type.length - 1;
while (type[len1-ret] === '*') {
@@ -1858,6 +1859,8 @@ function JSify(data) {
//print('//yyyyy ' + JSON.stringify(value) + ',' + type);
if (isNumberType(type)) {
return makePointer(value.text);
+ } else if (pointingLevels(type) == 1) {
+ return makePointer(value.text);
} else if (value.text[0] == '"') {
value.text = value.text.substr(1, value.text.length-2);
return makePointer('intArrayFromString("' + value.text + '")');
diff --git a/tests/runner.py b/tests/runner.py
index 4aab0970..1509ac28 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -158,6 +158,7 @@ class T(unittest.TestCase):
src = '''
#include <stdio.h>
int global = 20;
+ int *far;
int main()
{
int x = 5;
@@ -166,7 +167,8 @@ class T(unittest.TestCase):
y += 1;
int w = x*3+4;
int k = w < 15 ? 99 : 101;
- k += global;
+ far = &k;
+ *far += global;
int i = k > 100; // Should be an int, not a bool!
int j = i << 6;
j >>= 1;