*updated the list of donors;

*polished the sample code;
*improved stability of the shell;
*updated binaries.
This commit is contained in:
Wang Renxin 2017-02-26 14:42:10 +08:00
parent a1fd96aa03
commit 381a8a87cd
6 changed files with 17 additions and 14 deletions

View File

@ -44,6 +44,7 @@ DO NOT CHANGE THIS FILE.
</p> </p>
<p> <p>
<ul type="none"> <ul type="none">
<li>Ken Seergobin</li>
<li>Francesco De Simone</li> <li>Francesco De Simone</li>
<li>Nicola Giacobbe</li> <li>Nicola Giacobbe</li>
<li>Devulder Jean-Paul</li> <li>Devulder Jean-Paul</li>

Binary file not shown.

Binary file not shown.

View File

@ -88,7 +88,7 @@ class level
c.name = "Therapist" c.name = "Therapist"
c.talk_handler = lambda (_) c.talk_handler = lambda (_)
( (
print "- " + _.name + ": give you 23 HP"; print "- " + _.name + ": gives you 23 HP";
_.alive = false _.alive = false
role.hp = role.hp + 23 role.hp = role.hp + 23
) )

View File

@ -4,7 +4,7 @@
' For more information about MY-BASIC, see https://github.com/paladin-t/my_basic/ ' For more information about MY-BASIC, see https://github.com/paladin-t/my_basic/
def cls() def cls()
if os() = "WIN" then if os() = "WINDOWS" then
sys("cls") sys("cls")
else else
sys("clear") sys("clear")

View File

@ -441,6 +441,7 @@ static void _destroy_code(void) {
free(code->lines[i]); free(code->lines[i]);
free(code->lines); free(code->lines);
free(code); free(code);
code = 0;
} }
static void _clear_code(void) { static void _clear_code(void) {
@ -582,16 +583,15 @@ static void _destroy_importing_directories(void) {
free(importing_dirs->dirs[i]); free(importing_dirs->dirs[i]);
free(importing_dirs->dirs); free(importing_dirs->dirs);
free(importing_dirs); free(importing_dirs);
importing_dirs = 0;
} }
static _importing_dirs_t* _set_importing_directories(char* dirs) { static _importing_dirs_t* _set_importing_directories(const char* dirs) {
_importing_dirs_t* result = 0; _importing_dirs_t* result = 0;
char* end = 0;
if(!dirs) if(!dirs)
return result; return result;
end = dirs + strlen(dirs);
result = (_importing_dirs_t*)malloc(sizeof(_importing_dirs_t)); result = (_importing_dirs_t*)malloc(sizeof(_importing_dirs_t));
_CHECK_MEM(result); _CHECK_MEM(result);
result->count = 0; result->count = 0;
@ -599,23 +599,26 @@ static _importing_dirs_t* _set_importing_directories(char* dirs) {
result->dirs = (char**)malloc(sizeof(char*) * result->size); result->dirs = (char**)malloc(sizeof(char*) * result->size);
_CHECK_MEM(result->dirs); _CHECK_MEM(result->dirs);
while(dirs && dirs < end && *dirs) { while(dirs && *dirs) {
int l = 0; int l = 0;
char* buf = 0; char* buf = 0;
bool_t as = false; bool_t as = false;
strtok(dirs, ";"); const char* p = dirs;
if(!(*dirs)) dirs = strchr(dirs, ';');
continue; if(dirs) {
if(*dirs == ';') { dirs++; continue; } l = dirs - p;
if(*dirs == ';') ++dirs;
} else {
l = strlen(p);
}
if(result->count + 1 == result->size) { if(result->count + 1 == result->size) {
result->size += _REALLOC_INC_STEP; result->size += _REALLOC_INC_STEP;
result->dirs = (char**)realloc(result->dirs, sizeof(char*) * result->size); result->dirs = (char**)realloc(result->dirs, sizeof(char*) * result->size);
} }
l = (int)strlen(dirs); as = p[l - 1] != '/' && p[l - 1] != '\\';
as = dirs[l - 1] != '/' && dirs[l - 1] != '\\';
buf = (char*)malloc(l + (as ? 2 : 1)); buf = (char*)malloc(l + (as ? 2 : 1));
_CHECK_MEM(buf); _CHECK_MEM(buf);
memcpy(buf, dirs, l); memcpy(buf, p, l);
if(as) { if(as) {
buf[l] = '/'; buf[l] = '/';
buf[l + 1] = '\0'; buf[l + 1] = '\0';
@ -627,7 +630,6 @@ static _importing_dirs_t* _set_importing_directories(char* dirs) {
if(*buf == '\\') *buf = '/'; if(*buf == '\\') *buf = '/';
buf++; buf++;
} }
dirs += l + 1;
} }
_destroy_importing_directories(); _destroy_importing_directories();