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

ruby-changes:15439

From: nobu <ko1@a...>
Date: Wed, 14 Apr 2010 15:58:33 +0900 (JST)
Subject: [ruby-changes:15439] Ruby:r27337 (trunk, ruby_1_8): * string.c (rb_string_value_cstr): make NUL terminated if it is

nobu	2010-04-14 15:58:13 +0900 (Wed, 14 Apr 2010)

  New Revision: 27337

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

  Log:
    * string.c (rb_string_value_cstr): make NUL terminated if it is
      not done.

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/string.c
    trunk/ChangeLog
    trunk/string.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 27336)
+++ ChangeLog	(revision 27337)
@@ -1,3 +1,8 @@
+Wed Apr 14 15:58:11 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_string_value_cstr): make NUL terminated if it is
+	  not done.
+
 Wed Apr 14 12:56:21 2010  Shugo Maeda  <shugo@r...>
 
 	* lib/net/imap (encode_utf7): encode & properly.  Thanks, Kengo
Index: string.c
===================================================================
--- string.c	(revision 27336)
+++ string.c	(revision 27337)
@@ -1375,10 +1375,12 @@
 {
     VALUE str = rb_string_value(ptr);
     char *s = RSTRING_PTR(str);
+    long len = RSTRING_LEN(str);
 
-    if (!s || RSTRING_LEN(str) != (long)strlen(s)) {
+    if (!s || memchr(s, 0, len)) {
 	rb_raise(rb_eArgError, "string contains null byte");
     }
+    if (s[len]) rb_str_modify(str);
     return s;
 }
 
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 27336)
+++ ruby_1_8/ChangeLog	(revision 27337)
@@ -1,3 +1,8 @@
+Wed Apr 14 15:58:11 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_string_value_cstr): make NUL terminated if it is
+	  not done.
+
 Mon Apr 12 21:47:41 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* LEGAL: separated the section for parse.c.  contributed by Paul
Index: ruby_1_8/string.c
===================================================================
--- ruby_1_8/string.c	(revision 27336)
+++ ruby_1_8/string.c	(revision 27337)
@@ -607,10 +607,12 @@
 {
     VALUE str = rb_string_value(ptr);
     char *s = RSTRING(str)->ptr;
+    long len = RSTRING(str)->len;
 
-    if (!s || RSTRING(str)->len != strlen(s)) {
+    if (!s || memchr(s, 0, len)) {
 	rb_raise(rb_eArgError, "string contains null byte");
     }
+    if (s[len]) rb_str_modify(str);
     return s;
 }
 

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

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