mirror of
https://github.com/halaxa/json-machine.git
synced 2025-03-15 17:09:39 +01:00
Segfault resolved
This commit is contained in:
parent
f142eb20cc
commit
2e783a0120
@ -121,25 +121,34 @@ zend_string *zstr_tokenBuffer;
|
||||
zend_string *zstr_byte;
|
||||
int myNum;
|
||||
int i;
|
||||
i = lastIndex;
|
||||
printf("line: %d\n", __LINE__);
|
||||
printf("lastIndex: %ld\n", lastIndex);
|
||||
printf("i: %d\n", i);
|
||||
printf("strlen(json): %zu\n", strlen(json));
|
||||
printf("i < strlen(json): %d\n", i < strlen(json));
|
||||
printf("for\n");
|
||||
|
||||
for (i = lastIndex; i < strlen(json); i++) {
|
||||
|
||||
byte = json[i];
|
||||
//printf("[[%d, %d, \"%s\", %ld]]", inString, escaping, tokenBuffer, lastIndex);
|
||||
//printf("[[%d, %d, \"%s\", %ld]]\n", inString, escaping, tokenBuffer, lastIndex);
|
||||
//printf("'%c'\n", byte);
|
||||
//printf("'%d'\n", i);
|
||||
|
||||
//scanf("%d", &myNum);
|
||||
//printf("if (escaping) {\n");
|
||||
printf("if (escaping) {\n");
|
||||
if (escaping) {
|
||||
escaping = false;
|
||||
tokenBuffer[strlen(tokenBuffer)] = byte;
|
||||
continue;
|
||||
}
|
||||
//printf("if (insignificantBytes[byte]) {\n");
|
||||
printf("if (insignificantBytes[byte]) {\n");
|
||||
if (insignificantBytes[byte]) {
|
||||
tokenBuffer[strlen(tokenBuffer)] = byte;
|
||||
continue;
|
||||
}
|
||||
//printf("if (inString) {\n");
|
||||
printf("if (inString) {\n");
|
||||
if (inString) {
|
||||
if (byte == '"') {
|
||||
inString = false;
|
||||
@ -149,20 +158,20 @@ int myNum;
|
||||
tokenBuffer[strlen(tokenBuffer)] = byte;
|
||||
continue;
|
||||
}
|
||||
//printf("if (tokenBoundaries[byte]) {\n");
|
||||
printf("if (tokenBoundaries[byte]) {\n");
|
||||
if (tokenBoundaries[byte]) {
|
||||
//printf("if (strlen(tokenBuffer)) {\n");
|
||||
printf("if (strlen(tokenBuffer)) {\n");
|
||||
if (strlen(tokenBuffer)) {
|
||||
printf("%s\n", tokenBuffer);
|
||||
printf("%s\n", tokenBuffer);
|
||||
ZVAL_BOOL(zEscaping, false);
|
||||
ZVAL_BOOL(zInString, false);
|
||||
ZVAL_STRING(zTokenBuffer, "");
|
||||
ZVAL_LONG(zLastIndex, i);
|
||||
//printf("RETURN_STR(zstr_tokenBuffer);\n");
|
||||
printf("RETURN_STR(zstr_tokenBuffer);\n");
|
||||
zstr_tokenBuffer = zend_string_init(tokenBuffer, strlen(tokenBuffer), 0);
|
||||
RETURN_STR(zstr_tokenBuffer);
|
||||
}
|
||||
//printf("if (colonCommaBracket[byte]) {\n");
|
||||
printf("if (colonCommaBracket[byte]) {\n");
|
||||
if (colonCommaBracket[byte]) {
|
||||
printf("ZVAL_BOOL(Z_REFVAL_P(zEscaping), false);\n");
|
||||
ZVAL_BOOL(zEscaping, false);
|
||||
@ -172,27 +181,25 @@ int myNum;
|
||||
ZVAL_STRING(zTokenBuffer, "");
|
||||
printf("ZVAL_LONG(Z_REFVAL_P(zLastIndex), i+1);\n");
|
||||
ZVAL_LONG(zLastIndex, i+1);
|
||||
//printf("RETURN_STR((zend_string *) &byte);\n");
|
||||
printf("RETURN_STR((zend_string *) &byte);\n");
|
||||
zstr_byte = zend_string_init((char *)&byte, 1, 0);
|
||||
RETURN_STR(zstr_byte);
|
||||
}
|
||||
//printf("} else {\n");
|
||||
printf("} else {\n");
|
||||
} else { // else branch matches `"` but also `\` outside of a string literal which is an error anyway but strictly speaking not correctly parsed token
|
||||
inString = true;
|
||||
tokenBuffer[strlen(tokenBuffer)] = byte;
|
||||
}
|
||||
|
||||
php_printf("zTokenBuffer: %s\n", Z_STRVAL_P(zTokenBuffer));
|
||||
php_printf("zEscaping: %s\n", Z_TYPE_P(zEscaping) == IS_TRUE ? "true" : "false");
|
||||
php_printf("zInString: %s\n", Z_TYPE_P(zInString) == IS_TRUE ? "true" : "false");
|
||||
php_printf("zLastIndex: %ld\n", Z_LVAL_P(zLastIndex));
|
||||
}
|
||||
|
||||
//printf("ZVAL_STRING(Z_REFVAL_P(zTokenBuffer), tokenBuffer);\n");
|
||||
ZVAL_STRING(Z_REFVAL_P(zTokenBuffer), tokenBuffer);
|
||||
ZVAL_BOOL(Z_REFVAL_P(zEscaping), escaping);
|
||||
ZVAL_BOOL(Z_REFVAL_P(zInString), inString);
|
||||
ZVAL_LONG(Z_REFVAL_P(zLastIndex), i+1);
|
||||
printf("line: %d\n", __LINE__);
|
||||
ZVAL_BOOL(zEscaping, escaping);
|
||||
printf("ZVAL_BOOL(Z_REFVAL_P(zInString), false);\n");
|
||||
ZVAL_BOOL(zInString, inString);
|
||||
printf("ZVAL_STRING(Z_REFVAL_P(zTokenBuffer), "");\n");
|
||||
ZVAL_STRING(zTokenBuffer, tokenBuffer);
|
||||
printf("ZVAL_LONG(Z_REFVAL_P(zLastIndex), i+1);\n");
|
||||
ZVAL_LONG(zLastIndex, 0);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user