[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]