ruby-changes:14086
From: shyouhei <ko1@a...>
Date: Tue, 24 Nov 2009 16:10:58 +0900 (JST)
Subject: [ruby-changes:14086] Ruby:r25899 (ruby_1_8_7): merge revision(s) 25269:
shyouhei 2009-11-24 16:02:04 +0900 (Tue, 24 Nov 2009) New Revision: 25899 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25899 Log: merge revision(s) 25269: * ext/curses/curses.c: Many functions of module Curses could cause a crash if the ncurses library was not properly initialized. Fix pointed out by Alexander Beisig [ruby-core:22592] Functions fixed: attroff, attron, attrset, bkgd, bkgdset, can_change_color, close_screen, closed, color_content, curs_set, def_prog_mode, delch, deleteln, getmouse, getstr, has_colors, init_color, init_pair, insertln, keyname, mouseinterval, mousemask, pair_content, pair_number, reset_prog_mode, resizeterm, scrl, setscrreg, standend, standout, start_color, timeout, ungetmouse Modified files: branches/ruby_1_8_7/ChangeLog branches/ruby_1_8_7/ext/curses/curses.c branches/ruby_1_8_7/version.h Index: ruby_1_8_7/ext/curses/curses.c =================================================================== --- ruby_1_8_7/ext/curses/curses.c (revision 25898) +++ ruby_1_8_7/ext/curses/curses.c (revision 25899) @@ -141,6 +141,7 @@ static VALUE curses_close_screen() { + curses_stdscr(); #ifdef HAVE_ISENDWIN if (!isendwin()) #endif @@ -167,6 +168,7 @@ curses_closed() { #ifdef HAVE_ISENDWIN + curses_stdscr(); if (isendwin()) { return Qtrue; } @@ -355,6 +357,7 @@ curses_standout(obj) VALUE obj; { + curses_stdscr(); standout(); return Qnil; } @@ -364,6 +367,7 @@ curses_standend(obj) VALUE obj; { + curses_stdscr(); standend(); return Qnil; } @@ -429,6 +433,7 @@ { char rtn[1024]; /* This should be big enough.. I hope */ + curses_stdscr(); rb_read_check(stdin); #if defined(HAVE_GETNSTR) getnstr(rtn,1023); @@ -443,6 +448,7 @@ curses_delch(obj) VALUE obj; { + curses_stdscr(); delch(); return Qnil; } @@ -452,6 +458,7 @@ curses_deleteln(obj) VALUE obj; { + curses_stdscr(); #if defined(HAVE_DELETELN) || defined(deleteln) deleteln(); #endif @@ -463,6 +470,7 @@ curses_insertln(obj) VALUE obj; { + curses_stdscr(); #if defined(HAVE_INSERTLN) || defined(insertln) insertln(); #endif @@ -478,6 +486,7 @@ #ifdef HAVE_KEYNAME const char *name; + curses_stdscr(); name = keyname(NUM2INT(c)); if (name) { return rb_str_new2(name); @@ -506,6 +515,7 @@ { #ifdef HAVE_CURS_SET int n; + curses_stdscr(); return (n = curs_set(NUM2INT(visibility)) != ERR) ? INT2FIX(n) : Qnil; #else return Qnil; @@ -517,6 +527,7 @@ { /* may have to raise exception on ERR */ #ifdef HAVE_SCRL + curses_stdscr(); return (scrl(NUM2INT(n)) == OK) ? Qtrue : Qfalse; #else return Qfalse; @@ -528,6 +539,7 @@ { /* may have to raise exception on ERR */ #ifdef HAVE_SETSCRREG + curses_stdscr(); return (setscrreg(NUM2INT(top), NUM2INT(bottom)) == OK) ? Qtrue : Qfalse; #else return Qfalse; @@ -537,6 +549,7 @@ static VALUE curses_attroff(VALUE obj, VALUE attrs) { + curses_stdscr(); return window_attroff(rb_stdscr,attrs); /* return INT2FIX(attroff(NUM2INT(attrs))); */ } @@ -544,6 +557,7 @@ static VALUE curses_attron(VALUE obj, VALUE attrs) { + curses_stdscr(); return window_attron(rb_stdscr,attrs); /* return INT2FIX(attroff(NUM2INT(attrs))); */ } @@ -551,6 +565,7 @@ static VALUE curses_attrset(VALUE obj, VALUE attrs) { + curses_stdscr(); return window_attrset(rb_stdscr,attrs); /* return INT2FIX(attroff(NUM2INT(attrs))); */ } @@ -559,6 +574,7 @@ curses_bkgdset(VALUE obj, VALUE ch) { #ifdef HAVE_BKGDSET + curses_stdscr(); bkgdset(NUM2CH(ch)); #endif return Qnil; @@ -568,6 +584,7 @@ curses_bkgd(VALUE obj, VALUE ch) { #ifdef HAVE_BKGD + curses_stdscr(); return (bkgd(NUM2CH(ch)) == OK) ? Qtrue : Qfalse; #else return Qfalse; @@ -578,6 +595,7 @@ curses_resizeterm(VALUE obj, VALUE lin, VALUE col) { #if defined(HAVE_RESIZETERM) + curses_stdscr(); return (resizeterm(NUM2INT(lin),NUM2INT(col)) == OK) ? Qtrue : Qfalse; #else return Qnil; @@ -589,6 +607,7 @@ curses_start_color(VALUE obj) { /* may have to raise exception on ERR */ + curses_stdscr(); return (start_color() == OK) ? Qtrue : Qfalse; } @@ -596,6 +615,7 @@ curses_init_pair(VALUE obj, VALUE pair, VALUE f, VALUE b) { /* may have to raise exception on ERR */ + curses_stdscr(); return (init_pair(NUM2INT(pair),NUM2INT(f),NUM2INT(b)) == OK) ? Qtrue : Qfalse; } @@ -603,6 +623,7 @@ curses_init_color(VALUE obj, VALUE color, VALUE r, VALUE g, VALUE b) { /* may have to raise exception on ERR */ + curses_stdscr(); return (init_color(NUM2INT(color),NUM2INT(r), NUM2INT(g),NUM2INT(b)) == OK) ? Qtrue : Qfalse; } @@ -610,12 +631,14 @@ static VALUE curses_has_colors(VALUE obj) { + curses_stdscr(); return has_colors() ? Qtrue : Qfalse; } static VALUE curses_can_change_color(VALUE obj) { + curses_stdscr(); return can_change_color() ? Qtrue : Qfalse; } @@ -624,6 +647,7 @@ { short r,g,b; + curses_stdscr(); color_content(NUM2INT(color),&r,&g,&b); return rb_ary_new3(3,INT2FIX(r),INT2FIX(g),INT2FIX(b)); } @@ -633,6 +657,7 @@ { short f,b; + curses_stdscr(); pair_content(NUM2INT(pair),&f,&b); return rb_ary_new3(2,INT2FIX(f),INT2FIX(b)); } @@ -646,6 +671,7 @@ static VALUE curses_pair_number(VALUE obj, VALUE attrs) { + curses_stdscr(); return INT2FIX(PAIR_NUMBER(NUM2INT(attrs))); } #endif /* USE_COLOR */ @@ -681,6 +707,7 @@ struct mousedata *mdata; VALUE val; + curses_stdscr(); val = Data_Make_Struct(cMouseEvent,struct mousedata, 0,curses_mousedata_free,mdata); mdata->mevent = (MEVENT*)xmalloc(sizeof(MEVENT)); @@ -692,6 +719,7 @@ { struct mousedata *mdata; + curses_stdscr(); GetMOUSE(mevent,mdata); return (ungetmouse(mdata->mevent) == OK) ? Qtrue : Qfalse; } @@ -699,12 +727,14 @@ static VALUE curses_mouseinterval(VALUE obj, VALUE interval) { + curses_stdscr(); return mouseinterval(NUM2INT(interval)) ? Qtrue : Qfalse; } static VALUE curses_mousemask(VALUE obj, VALUE mask) { + curses_stdscr(); return INT2NUM(mousemask(NUM2UINT(mask),NULL)); } @@ -728,6 +758,7 @@ curses_timeout(VALUE obj, VALUE delay) { #ifdef HAVE_TIMEOUT + curses_stdscr(); timeout(NUM2INT(delay)); return Qnil; #else @@ -739,6 +770,7 @@ curses_def_prog_mode(VALUE obj) { #ifdef HAVE_DEF_PROG_MODE + curses_stdscr(); return def_prog_mode() == OK ? Qtrue : Qfalse; #else rb_notimplement(); @@ -749,6 +781,7 @@ curses_reset_prog_mode(VALUE obj) { #ifdef HAVE_RESET_PROG_MODE + curses_stdscr(); return reset_prog_mode() == OK ? Qtrue : Qfalse; #else rb_notimplement(); Index: ruby_1_8_7/ChangeLog =================================================================== --- ruby_1_8_7/ChangeLog (revision 25898) +++ ruby_1_8_7/ChangeLog (revision 25899) @@ -1,3 +1,15 @@ +Tue Nov 24 15:51:07 2009 Marc-Andre Lafortune <ruby-core@m...> + + * ext/curses/curses.c: Many functions of module Curses could cause a + crash if the ncurses library was not properly initialized. + Fix pointed out by Alexander Beisig [ruby-core:22592] + Functions fixed: attroff, attron, attrset, bkgd, bkgdset, + can_change_color, close_screen, closed, color_content, curs_set, + def_prog_mode, delch, deleteln, getmouse, getstr, has_colors, + init_color, init_pair, insertln, keyname, mouseinterval, mousemask, + pair_content, pair_number, reset_prog_mode, resizeterm, scrl, + setscrreg, standend, standout, start_color, timeout, ungetmouse + Fri Nov 20 15:49:59 2009 Tanaka Akira <akr@f...> * lib/resolv.rb (Resolv::DNS.bind_random_port): bind to "::" for IPv6. Index: ruby_1_8_7/version.h =================================================================== --- ruby_1_8_7/version.h (revision 25898) +++ ruby_1_8_7/version.h (revision 25899) @@ -1,15 +1,15 @@ #define RUBY_VERSION "1.8.7" -#define RUBY_RELEASE_DATE "2009-11-20" +#define RUBY_RELEASE_DATE "2009-11-24" #define RUBY_VERSION_CODE 187 -#define RUBY_RELEASE_CODE 20091120 -#define RUBY_PATCHLEVEL 216 +#define RUBY_RELEASE_CODE 20091124 +#define RUBY_PATCHLEVEL 217 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 #define RUBY_VERSION_TEENY 7 #define RUBY_RELEASE_YEAR 2009 #define RUBY_RELEASE_MONTH 11 -#define RUBY_RELEASE_DAY 20 +#define RUBY_RELEASE_DAY 24 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/