[#11915] core dump with GC and Ruby/zlib — Tanaka Akira <akr@...17n.org>
次のスクリプトが core を吐きます。
9 messages
2001/01/04
[#11916] Re: core dump with GC and Ruby/zlib
— Ueno Katsuhiro <unnie@...>
2001/01/04
うえの@ぶるーすかいです。
[#11918] Re: core dump with GC and Ruby/zlib
— matz@... (Yukihiro Matsumoto)
2001/01/04
まつもと ゆきひろです
[#11919] Managing Ruby docs in the CVS repository — "Akinori MUSHA" <knu@...>
At Sun, 31 Dec 2000 00:04:00 +0900,
11 messages
2001/01/04
[#11960] Re: Managing Ruby docs in the CVS repository
— matz@... (Yukihiro Matsumoto)
2001/01/10
まつもと ゆきひろです
[#11925] -d をつけると rescue できない — Kazuhiro NISHIYAMA <zn@...>
-dをつけるとThread#joinで再発生した例外がrescueできなくなります。
8 messages
2001/01/06
[#11950] [PATCH] inline function — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
3 messages
2001/01/10
[#11952] NORETURN — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
24 messages
2001/01/10
[#11956] Re: NORETURN
— WATANABE Hirofumi <eban@...>
2001/01/10
わたなべです.
[#11957] Re: NORETURN
— matz@... (Yukihiro Matsumoto)
2001/01/10
まつもと ゆきひろです
[#11958] Re: NORETURN
— WATANABE Hirofumi <eban@...>
2001/01/10
わたなべです.
[#11959] CVS branches (Re: Re: NORETURN)
— matz@... (Yukihiro Matsumoto)
2001/01/10
[#11963] Re: CVS branches (Re: Re: NORETURN)
— WATANABE Hirofumi <eban@...>
2001/01/10
わたなべです.
[#11964] Re: CVS branches (Re: Re: NORETURN)
— matz@... (Yukihiro Matsumoto)
2001/01/10
まつもと ゆきひろです
[#11968] Re: CVS branches (Re: Re: NORETURN)
— "Akinori MUSHA" <knu@...>
2001/01/10
At Wed, 10 Jan 2001 18:17:50 +0900,
[#11971] Re: CVS branches (Re: Re: NORETURN)
— matz@... (Yukihiro Matsumoto)
2001/01/10
まつもと ゆきひろです
[#11977] Re: CVS branches (Re: Re: NORETURN)
— matz@... (Yukihiro Matsumoto)
2001/01/11
まつもと ゆきひろです
[#11972] download tarball using cvsweb — Katsuyuki Komatsu <komatsu@...>
小松です。
2 messages
2001/01/10
[#11988] [PATCH] mswin32 system problem — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
12 messages
2001/01/11
[#11994] Re: [PATCH] mswin32 system problem
— matz@... (Yukihiro Matsumoto)
2001/01/12
まつもと ゆきひろです
[#11995] Re: [PATCH] mswin32 system problem
— WATANABE Hirofumi <eban@...>
2001/01/12
わたなべです.
[#11996] Re: [PATCH] mswin32 system problem
— "Nobuyoshi.Nakada" <nobu.nakada@...>
2001/01/12
なかだです。
[#11997] Re: [PATCH] mswin32 system problem
— matz@... (Yukihiro Matsumoto)
2001/01/12
まつもと ゆきひろです
[#12001] m17n: encoding module dynamic load — Yasushi Shoji <yashi@...>
At Fri, 12 Jan 2001 11:06:05 +0900,
4 messages
2001/01/12
[#12015] RWiki + CVS — "Akinori MUSHA" <knu@...>
ruby-dev に振り直します。フォローはこちらにお願いします。
7 messages
2001/01/14
[#12035] misc/*.el — "Akinori MUSHA" <knu@...>
misc/*.el を独立モジュールとして管理するというのはいかがでしょうか。
7 messages
2001/01/18
[#12040] repo guide — "Akinori MUSHA" <knu@...>
CVS repository 利用のガイドラインの英語版を出しました。今後は、
9 messages
2001/01/18
[#12041] Re: repo guide
— "K.Kosako" <kosako@...>
2001/01/19
Akinori MUSHAさんの<86n1covdl7.wl@archon.local.idaemons.org>から
[#12044] Re: repo guide
— "Akinori MUSHA" <knu@...>
2001/01/19
At Fri, 19 Jan 2001 10:34:28 +0900,
[#12054] break from proc-closure (Re: [ruby-list:27277]) — Masatoshi SEKI <m_seki@...>
6 messages
2001/01/21
[#12059] Re: break from proc-closure (Re: [ruby-list:27277])
— matz@... (Yukihiro Matsumoto)
2001/01/22
まつもと ゆきひろです
[#12063] 構文木表示 — toyofuku@...
豊福です。
6 messages
2001/01/22
[#12076] GC 内部で落ちる件 — "T.Shimomura" <redbugml@...>
T.Shimomura です。
14 messages
2001/01/26
[#12078] Re: GC 内部で落ちる件
— Shugo Maeda <shugo@...>
2001/01/26
前田です。
[#12079] Re: GC 内部で落ちる件
— "T.Shimomura" <redbugml@...>
2001/01/26
T.Shimomura です。
[#12084] [patch] mswin32 system() — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
10 messages
2001/01/27
[#12097] Re: [patch] mswin32 system()
— nobu.nakada@...
2001/01/27
なかだです。
[#12085] DATA and __END__ on RubyWin — Masaki Suketa <CQN02273@...>
助田です。
7 messages
2001/01/27
[#12087] string#index, gsub, []= のバグ? — Beyond <beyond@...>
18 messages
2001/01/27
[#12091] Re: string#index, gsub, []= のバグ?
— matz@... (Yukihiro Matsumoto)
2001/01/27
まつもと ゆきひろです
[#12093] Re: string#index, gsub, []= のバグ?
— nobu.nakada@...
2001/01/27
なかだです。
[#12107] Re: string#index, gsub, []= のバグ?
— matz@... (Yukihiro Matsumoto)
2001/01/28
まつもと ゆきひろです
[#12119] return from passed block — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだ@風邪っぴきです。
7 messages
2001/01/29
[ruby-dev:12084] [patch] mswin32 system()
From:
"U.Nakamura" <usa@...>
Date:
2001-01-27 10:02:19 UTC
List:
ruby-dev #12084
こんにちは、なかむら(う)です。
いろいろ考えてみたのですが、do_spawn()の中でどんなに工夫して引数を
分割しても、結局のところspawnvpe()の中でくっつけてCreateProcess()を
呼んでいるわけなので、いっそのこと分割しないで自前でCreateProcess()
を呼んだ方がいいんじゃないかと思い始めました。
というわけで、実験的パッチです。
ご意見よろしくお願いします。
--- current/win32/win32.c Sun Jan 14 18:25:20 2001
+++ mytree/win32/win32.c Sat Jan 27 18:46:54 2001
@@ -729,20 +729,19 @@ int
do_spawn(cmd)
char *cmd;
{
- register char **a;
- register char *s;
- char **argv;
+ register char *s, *p;
int status = -1;
- char *shell, *cmd2;
+ char *shell;
int mode = NtSyncProcess ? P_WAIT : P_NOWAIT;
- char quote;
char *exec;
+ PROCESS_INFORMATION pi;
+ STARTUPINFO si;
+
/* save an extra exec if possible */
if ((shell = getenv("RUBYSHELL")) != 0) {
if (NtHasRedirection(cmd)) {
int i;
- char *p;
char *argv[4];
char *cmdline = ALLOC_N(char, (strlen(cmd) * 2 + 1));
@@ -774,55 +773,67 @@ char *cmd;
}
}
- argv = ALLOC_N(CHARP, (strlen(cmd) / 2 + 2));
- cmd2 = ALLOC_N(char, (strlen(cmd) + 1));
- strcpy(cmd2, cmd);
- a = argv;
- for (s = cmd2; *s;) {
- while (*s && isspace(*s)) s++;
- if (*s == '"') {
- quote = *s;
- *(a++) = s++;
- while (*s) {
- if (*s == '\\' && *(s + 1) == quote) {
- memmove(s, s + 1, strlen(s) + 1);
- s++;
- }
- else if (*s == quote) {
- s++;
- break;
- }
- s++;
+ exec = ALLOC_N(char, (strlen(cmd) + 1));
+ p = exec;
+ s = cmd;
+ if (*cmd == '"') {
+ *s++;
+ for ( ; ; ) {
+ if (*s == '"' || *s == '\0') {
+ break;
+ }
+ else if (*s == '\\' && *(s + 1) == '"') {
+ *s++;
+ *p++ = *s++;
+ }
+ else if (IsDBCSLeadByte(*s)) {
+ *p++ = *s++;
+ *p++ = *s++;
+ }
+ else {
+ *p++ = *s++;
}
}
- else if (*s) {
- *(a++) = s;
- while (*s && !isspace(*s)) s++;
- }
- if (*s)
- *s++ = '\0';
+ *p = '\0';
}
- *a = NULL;
- exec = NULL;
- if (argv[0]) {
- exec = ALLOC_N(char, (strlen(argv[0]) + 1));
- if (argv[0][0] == '"' && argv[0][strlen(argv[0]) - 1] == '"') {
- strcpy(exec, &argv[0][1]);
- exec[strlen(exec) - 1] = '\0';
- }
- else {
- strcpy(exec, argv[0]);
- }
- if ((status = spawnvpe(mode, exec, argv, environ)) == -1) {
- free(exec);
- free(argv);
- free(cmd2);
- return -1;
+ else {
+ for ( ; ; ) {
+ if (*s == ' ' || *s == '\t' || *s == '\0') {
+ break;
+ }
+ else if (*s == '\\' && *(s + 1) == '"') {
+ *s++;
+ *p++ = *s++;
+ }
+ else if (IsDBCSLeadByte(*s)) {
+ *p++ = *s++;
+ *p++ = *s++;
+ }
+ else {
+ *p++ = *s++;
+ }
}
+ *p = '\0';
}
+
+ memset(&si, 0, sizeof(si));
+ si.cb = sizeof(si);
+ if (!CreateProcess(exec, cmd, NULL, NULL, TRUE, 0, environ, NULL, &si, &pi)) {
+ free(exec);
+ return -1;
+ }
+
+ if (NtSyncProcess) {
+ WaitForSingleObject(pi.hProcess, -1);
+ GetExitCodeProcess(pi.hProcess, &status);
+ CloseHandle(pi.hProcess);
+ }
+ else {
+ status = (int)pi.hProcess;
+ }
+ CloseHandle(pi.hThread);
+
free(exec);
- free(cmd2);
- free(argv);
return (int)((status & 0xff) << 8);
}
それでは。
--
U.Nakamura <usa@osb.att.ne.jp>