*improved stability for sub routine; *improved error handling with shell.
This commit is contained in:
parent
36834cd008
commit
021f552c67
1
HISTORY
1
HISTORY
@ -1,5 +1,6 @@
|
|||||||
Nov. 30 2015
|
Nov. 30 2015
|
||||||
Improved stability for sub routine
|
Improved stability for sub routine
|
||||||
|
Improved error handling with shell
|
||||||
|
|
||||||
Nov. 26 2015
|
Nov. 26 2015
|
||||||
Raised error for invalid routine usage
|
Raised error for invalid routine usage
|
||||||
|
@ -3620,16 +3620,9 @@ _end_import:
|
|||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_VAR) {
|
if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_VAR) {
|
||||||
tmp.obj = (_object_t*)(glbsyminscope->data);
|
_handle_error_now(s, SE_RN_INVALID_ROUTINE, 0, MB_FUNC_ERR);
|
||||||
if(!tmp.obj->ref) {
|
|
||||||
_ht_remove(running->var_dict, sym, _ls_cmp_extra_string);
|
goto _exit;
|
||||||
_dispose_object(tmp.obj);
|
|
||||||
}
|
|
||||||
tmp.obj->type = _DT_ROUTINE;
|
|
||||||
tmp.obj->data.routine = (_routine_t*)mb_malloc(sizeof(_routine_t));
|
|
||||||
_init_routine(s, tmp.obj->data.routine, sym);
|
|
||||||
_push_scope(s, tmp.obj->data.routine->scope);
|
|
||||||
_ht_set_or_insert(running->var_dict, sym, tmp.obj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_IS_FUNC(context->last_symbol, _core_def)) {
|
if(_IS_FUNC(context->last_symbol, _core_def)) {
|
||||||
|
Binary file not shown.
@ -703,8 +703,13 @@ static int _do_line(void) {
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
mb_assert(c);
|
mb_assert(c);
|
||||||
result = mb_reset(&bas, false);
|
result = mb_reset(&bas, false);
|
||||||
for(i = 0; i < c->count; ++i)
|
for(i = 0; i < c->count; ++i) {
|
||||||
mb_load_string(bas, c->lines[i]);
|
if(result)
|
||||||
|
break;
|
||||||
|
|
||||||
|
result = mb_load_string(bas, c->lines[i]);
|
||||||
|
}
|
||||||
|
if(result == MB_FUNC_OK)
|
||||||
result = mb_run(bas);
|
result = mb_run(bas);
|
||||||
_printf("\n");
|
_printf("\n");
|
||||||
} else if(_str_eq(line, "BYE")) {
|
} else if(_str_eq(line, "BYE")) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user