fixed the wrong argument handling problem

This commit is contained in:
hyunghwan.chung 2017-12-16 05:21:38 +00:00
parent 27fa6fa560
commit 49f0ff0bda
4 changed files with 19 additions and 20 deletions

View File

@ -9,6 +9,6 @@
#include 'Process.moo'. #include 'Process.moo'.
(* -------------------------------------------------------------------------- *) (* -------------------------------------------------------------------------- *)
#include 'FFI.moo'. ## #include 'FFI.moo'.
#include 'Stdio.moo'. #include 'Stdio.moo'.
#include 'Console.moo'. ## #include 'Console.moo'.

View File

@ -240,21 +240,19 @@ method(#class,#abstract) xxx. => method(#class) xxx { self subclassResponsibilit
[ [
## wait on the semaphore group. ## wait on the semaphore group.
r := self wait. r := self wait.
] on: Exception do: [:ex |
System unsignal: s.
ex throw
].
## if the internal semaphore has been signaled, ## if the internal semaphore has been signaled,
## arrange to return nil to indicate timeout. ## arrange to return nil to indicate timeout.
if (r == s) { r := nil } if (r == s) { r := nil }
elsif (r signalAction notNil) { r signalAction value: r }. elsif (r signalAction notNil) { r signalAction value: r }.
] ensure: [
## nullify the membership ## nullify the membership
self removeSemaphore: s. self removeSemaphore: s.
## cancel the notification arrangement in case it didn't time out. ## cancel the notification arrangement in case it didn't time out.
System unsignal: s. System unsignal: s.
].
^r. ^r.
} }

View File

@ -1008,7 +1008,6 @@ not_comment:
return 0; return 0;
unterminated: unterminated:
set_syntax_error (moo, MOO_SYNERR_CMTNC, LEXER_LOC(moo), MOO_NULL); set_syntax_error (moo, MOO_SYNERR_CMTNC, LEXER_LOC(moo), MOO_NULL);
return -1; return -1;

View File

@ -2108,7 +2108,7 @@ static int handle_logopt (moo_t* moo, const moo_bch_t* str)
xtn->logfd = open (xstr, O_CREAT | O_WRONLY | O_APPEND , 0644); xtn->logfd = open (xstr, O_CREAT | O_WRONLY | O_APPEND , 0644);
if (xtn->logfd == -1) if (xtn->logfd == -1)
{ {
fprintf (stderr, "ERROR: cannot open %s\n", xstr); fprintf (stderr, "ERROR: cannot open a log file %s\n", xstr);
if (str != xstr) moo_freemem (moo, xstr); if (str != xstr) moo_freemem (moo, xstr);
return -1; return -1;
} }
@ -2173,6 +2173,8 @@ int main (int argc, char* argv[])
goto print_usage; goto print_usage;
} }
} }
if (opt.ind >= argc) goto print_usage;
#endif #endif
memset (&vmprim, 0, MOO_SIZEOF(vmprim)); memset (&vmprim, 0, MOO_SIZEOF(vmprim));
@ -2249,7 +2251,7 @@ int main (int argc, char* argv[])
#if defined(macintosh) #if defined(macintosh)
i = 20; i = 20;
xtn->source_path = "test.st"; xtn->source_path = "test.moo";
goto compile; goto compile;
#endif #endif