[#21058] dRuby failed, ruby 1.8.0 preview7? — Masatoshi SEKI <m_seki@...>
咳といいます。
5 messages
2003/08/01
[#21072] __libc_ia64_register_backing_store_base — akira yamada / やまだあきら <akira@...>
5 messages
2003/08/02
[#21081] conversion from float to string — Yoshiki Wada <ysk@...5.so-net.ne.jp>
和田と申します。
8 messages
2003/08/02
[#21082] Re: conversion from float to string
— matz@... (Yukihiro Matsumoto)
2003/08/02
まつもと ゆきひろです
[#21083] Re: conversion from float to string
— Koji Arai <JCA02266@...>
2003/08/02
新井です。
[#21093] (ary - ary) preserves duplicated values — Koji Arai <JCA02266@...>
新井です。
7 messages
2003/08/03
[#21134] Re: [PATCH] Change configure to use Cygwin net release naming convention (PR#1077) — WATANABE Hirofumi <eban@...>
わたなべです。
4 messages
2003/08/05
[#21137] with-static-linked-ext — nobu.nakada@...
なかだです。
10 messages
2003/08/05
[#21140] Re: with-static-linked-ext
— nobu.nakada@...
2003/08/05
なかだです。
[#21142] Re: with-static-linked-ext
— matz@... (Yukihiro Matsumoto)
2003/08/05
まつもと ゆきひろです
[#21146] Regexp.alt(pat1, pat2, ...) — Tanaka Akira <akr@...17n.org>
提案なのですが、複数の Regexp (や String) を | でつなぐ Regexp.alt
4 messages
2003/08/05
[#21153] ChangeLog — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
12 messages
2003/08/06
[#21154] Re: ChangeLog
— matz@... (Yukihiro Matsumoto)
2003/08/06
まつもと ゆきひろです
[#21159] Re: ChangeLog
— nobu.nakada@...
2003/08/06
なかだです。
[#21160] Re: ChangeLog
— matz@... (Yukihiro Matsumoto)
2003/08/06
まつもと ゆきひろです
[#21170] soap4r to /src/ruby/lib — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
11 messages
2003/08/08
[#21176] marshalling ivtbl of Time — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
10 messages
2003/08/11
[#21475] Re: marshalling ivtbl of Time
— Tanaka Akira <akr@...17n.org>
2003/10/03
In article <1065144546.011594.19001.nullmailer@picachu.netlab.jp>,
[#21179] [BUG]net/httpでBUG — "yamamoto madoka" <dan@...2.so-net.ne.jp>
こんにちは、山本 円と申します。
8 messages
2003/08/11
[#21183] Process::UID.switch, Process::GID.switch — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
5 messages
2003/08/11
[#21216] [PATCH] reducing PUSH/POP/EXEC_TAG() for retry — nobu.nakada@...
なかだです。
4 messages
2003/08/21
[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
14 messages
2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.
— nobu.nakada@...
2003/08/22
なかだです。
[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.
— matz@... (Yukihiro Matsumoto)
2003/08/22
まつもと ゆきひろです
[#21229] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.
— nobu.nakada@...
2003/08/22
なかだです。
[#21231] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.
— matz@... (Yukihiro Matsumoto)
2003/08/23
まつもと ゆきひろです
[#21232] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.
— nobu.nakada@...
2003/08/23
なかだです。
[#21233] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.
— matz@... (Yukihiro Matsumoto)
2003/08/23
まつもと ゆきひろです
[#21234] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.
— Koji Arai <JCA02266@...>
2003/08/23
新井です。
[#21236] Re: [ruby-cvs] ruby: * enum.c (inject_i): userb_yield_values.
— Koji Arai <JCA02266@...>
2003/08/23
新井です。
[#21237] SEGV — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
12 messages
2003/08/23
[#21259] Regexp#initialize が $SAFE==4 で落ちる — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
9 messages
2003/08/25
[#21262] Re: Regexp#initialize が $SAFE==4 で落ちる
— matz@... (Yukihiro Matsumoto)
2003/08/26
まつもと ゆきひろです
[#21264] Re: Regexp#initializeが $SAFE==4 で落ちる
— nobu.nakada@...
2003/08/26
なかだです。
[#21280] スレッド内の例外でRuby停止 — "yamamoto madoka" <dan@...2.so-net.ne.jp>
こんにちは、山本と申します。
9 messages
2003/08/29
[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
16 messages
2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応
— matz@... (Yukihiro Matsumoto)
2003/08/29
まつもと ゆきひろです
[#21288] Re: 大量メモリ消費攻撃に対する対応
— Hidetoshi NAGAI <nagai@...>
2003/08/29
永井@知能.九工大です.
[#21306] Re: 大量メモリ消費攻撃に対する対応
— matz@... (Yukihiro Matsumoto)
2003/09/03
まつもと ゆきひろです
[#21309] Re: 大量メモリ消費攻撃に対する対応
— Hidetoshi NAGAI <nagai@...>
2003/09/03
永井@知能.九工大です.
[ruby-dev:21191] [PATCH] ext/curses
From:
nobu.nakada@...
Date:
2003-08-13 01:08:15 UTC
List:
ruby-dev #21191
なかだです。
Cursesのmodule functionで初期化が抜けているものがあるようです。
$ ruby -rcurses -e Curses.getch
-e:1: [BUG] Segmentation fault
ruby 1.8.0 (2003-08-12) [i686-linux]
アボートしました (core dumped)
それと、ブロックを取るメソッドCurses.open, Curses::Window.open
があると便利なように思います。
Index: ext/curses/curses.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/curses/curses.c,v
retrieving revision 1.19
diff -u -2 -p -w -r1.19 curses.c
--- ext/curses/curses.c 5 Jun 2003 09:36:30 -0000 1.19
+++ ext/curses/curses.c 13 Aug 2003 00:33:16 -0000
@@ -16,4 +16,8 @@
#include "ruby.h"
+#include <stdio.h>
+#include "rubyio.h"
+
+#define _XOPEN_SOURCE_EXTENDED 1
#if defined(HAVE_NCURSES_H)
# include <ncurses.h>
@@ -25,17 +29,19 @@
#else
# include <curses.h>
-# if (defined(__bsdi__) || defined(__NetBSD__) || defined(__APPLE__)) && !defined(_maxx)
+# if defined(__bsdi__) || defined(__NetBSD__) || defined(__APPLE__)
+# if !defined(_maxx)
# define _maxx maxx
# endif
-# if (defined(__bsdi__) || defined(__NetBSD__) || defined(__APPLE__)) && !defined(_maxy)
+# if !defined(_maxy)
# define _maxy maxy
# endif
-# if (defined(__bsdi__) || defined(__NetBSD__) || defined(__APPLE__)) && !defined(_begx)
+# if !defined(_begx)
# define _begx begx
# endif
-# if (defined(__bsdi__) || defined(__NetBSD__) || defined(__APPLE__)) && !defined(_begy)
+# if !defined(_begy)
# define _begy begy
# endif
#endif
+#endif
#ifdef HAVE_INIT_COLOR
@@ -48,7 +54,4 @@
#endif
-#include <stdio.h>
-#include "rubyio.h"
-
static VALUE mCurses;
static VALUE mKey;
@@ -143,4 +146,15 @@ curses_close_screen()
}
+static VALUE
+curses_s_open()
+{
+ VALUE scr = curses_stdscr();
+
+ if (rb_block_given_p()) {
+ return rb_ensure(rb_yield, scr, curses_close_screen, scr);
+ }
+ return scr;
+}
+
static void
curses_finalize(VALUE dummy)
@@ -175,4 +189,5 @@ curses_clear(obj)
VALUE obj;
{
+ curses_stdscr();
wclear(stdscr);
return Qnil;
@@ -184,4 +199,5 @@ curses_refresh(obj)
VALUE obj;
{
+ curses_stdscr();
refresh();
return Qnil;
@@ -193,4 +209,5 @@ curses_doupdate(obj)
VALUE obj;
{
+ curses_stdscr();
#ifdef HAVE_DOUPDATE
doupdate();
@@ -206,4 +223,5 @@ curses_echo(obj)
VALUE obj;
{
+ curses_stdscr();
echo();
return Qnil;
@@ -215,4 +233,5 @@ curses_noecho(obj)
VALUE obj;
{
+ curses_stdscr();
noecho();
return Qnil;
@@ -224,4 +243,5 @@ curses_raw(obj)
VALUE obj;
{
+ curses_stdscr();
raw();
return Qnil;
@@ -233,4 +253,5 @@ curses_noraw(obj)
VALUE obj;
{
+ curses_stdscr();
noraw();
return Qnil;
@@ -242,4 +263,5 @@ curses_cbreak(obj)
VALUE obj;
{
+ curses_stdscr();
cbreak();
return Qnil;
@@ -251,4 +273,5 @@ curses_nocbreak(obj)
VALUE obj;
{
+ curses_stdscr();
nocbreak();
return Qnil;
@@ -260,4 +283,5 @@ curses_nl(obj)
VALUE obj;
{
+ curses_stdscr();
nl();
return Qnil;
@@ -269,4 +293,5 @@ curses_nonl(obj)
VALUE obj;
{
+ curses_stdscr();
nonl();
return Qnil;
@@ -279,4 +304,5 @@ curses_beep(obj)
{
#ifdef HAVE_BEEP
+ curses_stdscr();
beep();
#endif
@@ -290,4 +316,5 @@ curses_flash(obj)
{
#ifdef HAVE_FLASH
+ curses_stdscr();
flash();
#endif
@@ -302,4 +329,5 @@ curses_ungetch(obj, ch)
{
#ifdef HAVE_UNGETCH
+ curses_stdscr();
ungetch(NUM2INT(ch));
#else
@@ -316,4 +344,5 @@ curses_setpos(obj, y, x)
VALUE x;
{
+ curses_stdscr();
move(NUM2INT(y), NUM2INT(x));
return Qnil;
@@ -343,4 +372,5 @@ curses_inch(obj)
VALUE obj;
{
+ curses_stdscr();
return CHR2FIX(inch());
}
@@ -352,4 +382,5 @@ curses_addch(obj, ch)
VALUE ch;
{
+ curses_stdscr();
addch(NUM2CHR(ch));
return Qnil;
@@ -362,4 +393,5 @@ curses_insch(obj, ch)
VALUE ch;
{
+ curses_stdscr();
insch(NUM2CHR(ch));
return Qnil;
@@ -372,4 +404,5 @@ curses_addstr(obj, str)
VALUE str;
{
+ curses_stdscr();
if (!NIL_P(str)) {
addstr(STR2CSTR(str));
@@ -384,4 +417,5 @@ curses_getch(obj)
{
rb_read_check(stdin);
+ curses_stdscr();
return UINT2NUM(getch());
}
@@ -511,8 +545,8 @@ curses_bkgd(VALUE obj, VALUE ch)
static VALUE
-curses_resizeterm(VALUE obj, VALUE lines, VALUE columns)
+curses_resizeterm(VALUE obj, VALUE lin, VALUE col)
{
#if defined(HAVE_RESIZETERM)
- return (resizeterm(NUM2INT(lines),NUM2INT(columns)) == OK) ? Qtrue : Qfalse;
+ return (resizeterm(NUM2INT(lin),NUM2INT(col)) == OK) ? Qtrue : Qfalse;
#else
return Qnil;
@@ -671,4 +705,6 @@ window_s_allocate(VALUE class)
}
+static VALUE window_close _((VALUE));
+
/* def initialize(h, w, top, left) */
static VALUE
@@ -712,4 +748,8 @@ window_subwin(obj, h, w, top, left)
win = prep_window(rb_obj_class(obj), window);
+ if (rb_block_given_p()) {
+ return rb_ensure(rb_yield, win, window_close, win);
+ }
+
return win;
}
@@ -1200,5 +1240,5 @@ window_getbkgd(VALUE obj)
static VALUE
-window_resize(VALUE obj, VALUE lines, VALUE columns)
+window_resize(VALUE obj, VALUE lin, VALUE col)
{
#if defined(HAVE_WRESIZE)
@@ -1206,5 +1246,5 @@ window_resize(VALUE obj, VALUE lines, VA
GetWINDOW(obj,winp);
- return wresize(winp->window, NUM2INT(lines), NUM2INT(columns)) == OK ? Qtrue : Qfalse;
+ return wresize(winp->window, NUM2INT(lin), NUM2INT(col)) == OK ? Qtrue : Qfalse;
#else
return Qnil;
@@ -1232,4 +1272,15 @@ window_keypad(VALUE obj, VALUE val)
#endif /* HAVE_KEYPAD */
+static VALUE
+window_s_open(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE win = rb_class_new_instance(argc, argv, klass);
+
+ if (rb_block_given_p()) {
+ return rb_ensure(rb_yield, win, window_close, win);
+ }
+ return win;
+}
+
/*------------------------- Initialization -------------------------*/
void
@@ -1253,4 +1304,5 @@ Init_curses()
rb_define_module_function(mCurses, "init_screen", curses_init_screen, 0);
rb_define_module_function(mCurses, "close_screen", curses_close_screen, 0);
+ rb_define_module_function(mCurses, "open", curses_s_open, 0);
rb_define_module_function(mCurses, "closed?", curses_closed, 0);
rb_define_module_function(mCurses, "stdscr", curses_stdscr, 0);
@@ -1317,4 +1369,5 @@ Init_curses()
rb_define_alloc_func(cWindow, window_s_allocate);
rb_define_method(cWindow, "initialize", window_initialize, 4);
+ rb_define_singleton_method(cWindow, "open", window_s_open, 4);
rb_define_method(cWindow, "subwin", window_subwin, 4);
rb_define_method(cWindow, "close", window_close, 0);
Index: ext/curses/extconf.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/curses/extconf.rb,v
retrieving revision 1.13
diff -u -2 -p -w -r1.13 extconf.rb
--- ext/curses/extconf.rb 4 Jul 2003 07:31:10 -0000 1.13
+++ ext/curses/extconf.rb 11 Aug 2003 08:34:21 -0000
@@ -14,8 +14,6 @@ elsif have_header("ncurses/curses.h") an
elsif have_header("curses_colr/curses.h") and have_library("cur_colr", "initscr")
make=true
-else
- if have_header("curses.h") and have_library("curses", "initscr")
+elsif have_header("curses.h") and have_library("curses", "initscr")
make=true
- end
end
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦