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

ruby-changes:22548

From: nari <ko1@a...>
Date: Tue, 14 Feb 2012 18:11:39 +0900 (JST)
Subject: [ruby-changes:22548] nari:r34597 (trunk): * gc.c (assign_heap_slot): SEGV happens cause on 64-bit platform

nari	2012-02-14 18:11:24 +0900 (Tue, 14 Feb 2012)

  New Revision: 34597

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34597

  Log:
    * gc.c (assign_heap_slot): SEGV happens cause on 64-bit platform
      sometime there should be `objs-=2` instead of `objs--`.
      patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92

  Modified files:
    trunk/ChangeLog
    trunk/gc.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 34596)
+++ ChangeLog	(revision 34597)
@@ -1,3 +1,9 @@
+Tue Feb 14 18:07:20 2012  Narihiro Nakamura  <authornari@g...>
+
+	* gc.c (assign_heap_slot): SEGV happens cause on 64-bit platform
+	  sometime there should be `objs-=2` instead of `objs--`.
+	  patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
+
 Tue Feb 14 16:00:30 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* io.c (io_setstrbuf): cut down the buffer if longer.
Index: gc.c
===================================================================
--- gc.c	(revision 34596)
+++ gc.c	(revision 34597)
@@ -1165,9 +1165,7 @@
     p = (RVALUE*)((VALUE)p + sizeof(struct heaps_header));
     if ((VALUE)p % sizeof(RVALUE) != 0) {
        p = (RVALUE*)((VALUE)p + sizeof(RVALUE) - ((VALUE)p % sizeof(RVALUE)));
-       if ((HEAP_SIZE - HEAP_OBJ_LIMIT * sizeof(RVALUE)) < (size_t)((char*)p - (char*)membase)) {
-           objs--;
-       }
+       objs = (HEAP_SIZE - (size_t)((VALUE)p - (VALUE)membase))/sizeof(RVALUE);
     }
 
     lo = 0;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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