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

ruby-changes:21172

From: nobu <ko1@a...>
Date: Thu, 8 Sep 2011 07:44:37 +0900 (JST)
Subject: [ruby-changes:21172] nobu:r33221 (trunk): * transcode.c (rb_declare_transcoder, load_transcoder_entry): no

nobu	2011-09-08 07:44:27 +0900 (Thu, 08 Sep 2011)

  New Revision: 33221

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

  Log:
    * transcode.c (rb_declare_transcoder, load_transcoder_entry): no
      longer need to limit the length of transcoder library name.

  Modified files:
    trunk/ChangeLog
    trunk/transcode.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 33220)
+++ ChangeLog	(revision 33221)
@@ -1,3 +1,8 @@
+Thu Sep  8 07:44:25 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* transcode.c (rb_declare_transcoder, load_transcoder_entry): no
+	  longer need to limit the length of transcoder library name.
+
 Thu Sep  8 07:36:36 2011  NARUSE, Yui  <naruse@r...>
 
 	* ext/syck/lib/syck/types.rb: use toplevel Syck.
Index: transcode.c
===================================================================
--- transcode.c	(revision 33220)
+++ transcode.c	(revision 33221)
@@ -227,15 +227,13 @@
     entry->lib = lib;
 }
 
-#define MAX_TRANSCODER_LIBNAME_LEN 64
 static const char transcoder_lib_prefix[] = "enc/trans/";
 
 void
 rb_declare_transcoder(const char *enc1, const char *enc2, const char *lib)
 {
-    if (!lib || strlen(lib) > MAX_TRANSCODER_LIBNAME_LEN) {
-	rb_raise(rb_eArgError, "invalid library name - %s",
-		 lib ? lib : "(null)");
+    if (!lib) {
+	rb_raise(rb_eArgError, "invalid library name - (null)");
     }
     declare_transcoder(enc1, enc2, lib);
 }
@@ -367,18 +365,14 @@
         return entry->transcoder;
 
     if (entry->lib) {
-        const char *lib = entry->lib;
-        size_t len = strlen(lib);
-        size_t total_len = sizeof(transcoder_lib_prefix) - 1 + len;
-        char *path;
-        VALUE fn;
+        const char *const lib = entry->lib;
+        const size_t len = strlen(lib);
+        const size_t total_len = sizeof(transcoder_lib_prefix) - 1 + len;
+        const VALUE fn = rb_str_new(0, total_len);
+        char *const path = RSTRING_PTR(fn);
 
         entry->lib = NULL;
 
-        if (len > MAX_TRANSCODER_LIBNAME_LEN)
-            return NULL;
-        fn = rb_str_new(0, total_len);
-        path = RSTRING_PTR(fn);
         memcpy(path, transcoder_lib_prefix, sizeof(transcoder_lib_prefix) - 1);
         memcpy(path + sizeof(transcoder_lib_prefix) - 1, lib, len);
         rb_str_set_len(fn, total_len);

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

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