fixed a wrong IF trunk processing bug, thanks to irony for pointing it out; fixed a crash bug with an invalid IF statement.
This commit is contained in:
parent
bd35f56154
commit
8b0e99c755
4
HISTORY
4
HISTORY
@ -1,3 +1,7 @@
|
|||||||
|
Aug. 11 2015
|
||||||
|
Fixed a wrong IF trunk processing bug, thanks to irony for pointing it out
|
||||||
|
Fixed a crash bug with an invalid IF statement
|
||||||
|
|
||||||
Jul. 27 2015
|
Jul. 27 2015
|
||||||
Fixed a memory leak with mb_pop_xxx, thanks to Daniel Haensse for pointing it out
|
Fixed a memory leak with mb_pop_xxx, thanks to Daniel Haensse for pointing it out
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ extern "C" {
|
|||||||
/** Macros */
|
/** Macros */
|
||||||
#define _VER_MAJOR 1
|
#define _VER_MAJOR 1
|
||||||
#define _VER_MINOR 1
|
#define _VER_MINOR 1
|
||||||
#define _VER_REVISION 60
|
#define _VER_REVISION 61
|
||||||
#define _MB_VERSION ((_VER_MAJOR * 0x01000000) + (_VER_MINOR * 0x00010000) + (_VER_REVISION))
|
#define _MB_VERSION ((_VER_MAJOR * 0x01000000) + (_VER_MINOR * 0x00010000) + (_VER_REVISION))
|
||||||
|
|
||||||
/* Uncomment this line to treat warnings as error */
|
/* Uncomment this line to treat warnings as error */
|
||||||
@ -3166,7 +3166,7 @@ int _skip_if_chunk(mb_interpreter_t* s, _ls_node_t** l) {
|
|||||||
obj = (_object_t*)(ast->data);
|
obj = (_object_t*)(ast->data);
|
||||||
*l = ast;
|
*l = ast;
|
||||||
ast = ast->next;
|
ast = ast->next;
|
||||||
} while(!_IS_FUNC(obj, _core_if) && !_IS_FUNC(obj, _core_elseif) && !_IS_FUNC(obj, _core_else));
|
} while(!_IS_FUNC(obj, _core_if) && !_IS_FUNC(obj, _core_elseif) && !_IS_FUNC(obj, _core_else) && !_IS_FUNC(obj, _core_endif));
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
return result;
|
return result;
|
||||||
@ -5021,10 +5021,12 @@ _elseif:
|
|||||||
_skip_if_chunk(s, &ast);
|
_skip_if_chunk(s, &ast);
|
||||||
}
|
}
|
||||||
if(multi_line && ast && _IS_FUNC(ast->data, _core_elseif)) {
|
if(multi_line && ast && _IS_FUNC(ast->data, _core_elseif)) {
|
||||||
if(ast) ast = ast->next;
|
ast = ast->next;
|
||||||
|
|
||||||
goto _elseif;
|
goto _elseif;
|
||||||
}
|
}
|
||||||
|
if(multi_line && ast && _IS_FUNC(ast->data, _core_endif))
|
||||||
|
goto _exit;
|
||||||
|
|
||||||
result = _skip_to(s, &ast, _core_else, _DT_EOS);
|
result = _skip_to(s, &ast, _core_else, _DT_EOS);
|
||||||
if(result != MB_FUNC_OK)
|
if(result != MB_FUNC_OK)
|
||||||
@ -5057,7 +5059,8 @@ _exit:
|
|||||||
if(multi_line)
|
if(multi_line)
|
||||||
result = _skip_to(s, &ast, _core_endif, _DT_NIL);
|
result = _skip_to(s, &ast, _core_endif, _DT_NIL);
|
||||||
|
|
||||||
_destroy_object(val, 0);
|
if(val->type != _DT_ANY)
|
||||||
|
_destroy_object(val, 0);
|
||||||
|
|
||||||
*l = ast;
|
*l = ast;
|
||||||
|
|
||||||
|
Binary file not shown.
@ -36,8 +36,8 @@
|
|||||||
IDI_ICON_MAIN ICON "icon.ico"
|
IDI_ICON_MAIN ICON "icon.ico"
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,1,59,0
|
FILEVERSION 1,1,61,0
|
||||||
PRODUCTVERSION 1,1,59,0
|
PRODUCTVERSION 1,1,61,0
|
||||||
FILEFLAGSMASK 0x17L
|
FILEFLAGSMASK 0x17L
|
||||||
# ifdef _DEBUG
|
# ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -55,13 +55,13 @@
|
|||||||
VALUE "Comments", "MY-BASIC"
|
VALUE "Comments", "MY-BASIC"
|
||||||
VALUE "CompanyName", "W. Renxin"
|
VALUE "CompanyName", "W. Renxin"
|
||||||
VALUE "FileDescription", "MY-BASIC interpreter"
|
VALUE "FileDescription", "MY-BASIC interpreter"
|
||||||
VALUE "FileVersion", "1, 1, 59, 0"
|
VALUE "FileVersion", "1, 1, 61, 0"
|
||||||
VALUE "InternalName", "my_basic"
|
VALUE "InternalName", "my_basic"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2011 - 2015 W. Renxin"
|
VALUE "LegalCopyright", "Copyright (C) 2011 - 2015 W. Renxin"
|
||||||
VALUE "LegalTrademarks", "MY-BASIC"
|
VALUE "LegalTrademarks", "MY-BASIC"
|
||||||
VALUE "OriginalFilename", "my_basic.exe"
|
VALUE "OriginalFilename", "my_basic.exe"
|
||||||
VALUE "ProductName", "MY-BASIC"
|
VALUE "ProductName", "MY-BASIC"
|
||||||
VALUE "ProductVersion", "1, 1, 59, 0"
|
VALUE "ProductVersion", "1, 1, 61, 0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -267,7 +267,7 @@ static void _list_program(const char* sn, const char* cn) {
|
|||||||
if(lsn == 0 && lcn == 0) {
|
if(lsn == 0 && lcn == 0) {
|
||||||
long i = 0;
|
long i = 0;
|
||||||
for(i = 0; i < c->count; ++i) {
|
for(i = 0; i < c->count; ++i) {
|
||||||
printf("%ld]%s\n", i + 1, c->lines[i]);
|
printf("%ld]%s", i + 1, c->lines[i]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
long i = 0;
|
long i = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user