diff --git a/donate.html b/donate.html
index 7030caa..9dc933c 100644
--- a/donate.html
+++ b/donate.html
@@ -44,6 +44,7 @@ DO NOT CHANGE THIS FILE.
+ - Ken Seergobin
- Francesco De Simone
- Nicola Giacobbe
- Devulder Jean-Paul
diff --git a/output/my_basic.exe b/output/my_basic.exe
index 2857147..8b272f8 100755
Binary files a/output/my_basic.exe and b/output/my_basic.exe differ
diff --git a/output/my_basic_mac b/output/my_basic_mac
index ff08a11..817cea6 100755
Binary files a/output/my_basic_mac and b/output/my_basic_mac differ
diff --git a/sample/yard/level.bas b/sample/yard/level.bas
index f5cb8e9..e83e5ff 100644
--- a/sample/yard/level.bas
+++ b/sample/yard/level.bas
@@ -88,7 +88,7 @@ class level
c.name = "Therapist"
c.talk_handler = lambda (_)
(
- print "- " + _.name + ": give you 23 HP";
+ print "- " + _.name + ": gives you 23 HP";
_.alive = false
role.hp = role.hp + 23
)
diff --git a/sample/yard/utils.bas b/sample/yard/utils.bas
index 4d83c49..e408f7c 100644
--- a/sample/yard/utils.bas
+++ b/sample/yard/utils.bas
@@ -4,7 +4,7 @@
' For more information about MY-BASIC, see https://github.com/paladin-t/my_basic/
def cls()
- if os() = "WIN" then
+ if os() = "WINDOWS" then
sys("cls")
else
sys("clear")
diff --git a/shell/main.c b/shell/main.c
index 56d13d9..d4bf933 100755
--- a/shell/main.c
+++ b/shell/main.c
@@ -441,6 +441,7 @@ static void _destroy_code(void) {
free(code->lines[i]);
free(code->lines);
free(code);
+ code = 0;
}
static void _clear_code(void) {
@@ -582,16 +583,15 @@ static void _destroy_importing_directories(void) {
free(importing_dirs->dirs[i]);
free(importing_dirs->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;
- char* end = 0;
if(!dirs)
return result;
- end = dirs + strlen(dirs);
result = (_importing_dirs_t*)malloc(sizeof(_importing_dirs_t));
_CHECK_MEM(result);
result->count = 0;
@@ -599,23 +599,26 @@ static _importing_dirs_t* _set_importing_directories(char* dirs) {
result->dirs = (char**)malloc(sizeof(char*) * result->size);
_CHECK_MEM(result->dirs);
- while(dirs && dirs < end && *dirs) {
+ while(dirs && *dirs) {
int l = 0;
char* buf = 0;
bool_t as = false;
- strtok(dirs, ";");
- if(!(*dirs))
- continue;
- if(*dirs == ';') { dirs++; continue; }
+ const char* p = dirs;
+ dirs = strchr(dirs, ';');
+ if(dirs) {
+ l = dirs - p;
+ if(*dirs == ';') ++dirs;
+ } else {
+ l = strlen(p);
+ }
if(result->count + 1 == result->size) {
result->size += _REALLOC_INC_STEP;
result->dirs = (char**)realloc(result->dirs, sizeof(char*) * result->size);
}
- l = (int)strlen(dirs);
- as = dirs[l - 1] != '/' && dirs[l - 1] != '\\';
+ as = p[l - 1] != '/' && p[l - 1] != '\\';
buf = (char*)malloc(l + (as ? 2 : 1));
_CHECK_MEM(buf);
- memcpy(buf, dirs, l);
+ memcpy(buf, p, l);
if(as) {
buf[l] = '/';
buf[l + 1] = '\0';
@@ -627,7 +630,6 @@ static _importing_dirs_t* _set_importing_directories(char* dirs) {
if(*buf == '\\') *buf = '/';
buf++;
}
- dirs += l + 1;
}
_destroy_importing_directories();