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/