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

ruby-changes:6757

From: nobu <ko1@a...>
Date: Thu, 31 Jul 2008 00:58:51 +0900 (JST)
Subject: [ruby-changes:6757] Ruby:r18273 (trunk): * pack.c (pack_unpack): reduced static variables.

nobu	2008-07-31 00:58:36 +0900 (Thu, 31 Jul 2008)

  New Revision: 18273

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

  Log:
    * pack.c (pack_unpack): reduced static variables.

  Modified files:
    trunk/ChangeLog
    trunk/pack.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18272)
+++ ChangeLog	(revision 18273)
@@ -1,3 +1,7 @@
+Thu Jul 31 00:58:33 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* pack.c (pack_unpack): reduced static variables.
+
 Thu Jul 31 00:10:20 2008  Yusuke Endoh  <mame@t...>
 
 	* proc.c (rb_proc_call_with_block): prevent null reference.
Index: pack.c
===================================================================
--- pack.c	(revision 18272)
+++ pack.c	(revision 18273)
@@ -1787,33 +1787,31 @@
 		VALUE buf = infected_str_new(0, (send - s)*3/4, str);
 		char *ptr = RSTRING_PTR(buf);
 		int a = -1,b = -1,c = 0,d;
-		static int first = 1;
-		static int b64_xtable[256];
+		static signed char b64_xtable[256];
 
-		if (first) {
+		if (b64_xtable['/'] <= 0) {
 		    int i;
-		    first = 0;
 
 		    for (i = 0; i < 256; i++) {
 			b64_xtable[i] = -1;
 		    }
 		    for (i = 0; i < 64; i++) {
-			b64_xtable[(int)b64_table[i]] = i;
+			b64_xtable[(unsigned char)b64_table[i]] = i;
 		    }
 		}
 		while (s < send) {
 		    a = b = c = d = -1;
-		    while((a = b64_xtable[(int)(*(unsigned char*)s)]) == -1 && s < send) { s++; }
-		    if( s >= send ) break;
+		    while ((a = b64_xtable[(unsigned char)*s]) == -1 && s < send) {s++;}
+		    if (s >= send) break;
 		    s++;
-		    while((b = b64_xtable[(int)(*(unsigned char*)s)]) == -1 && s < send) { s++; }
-		    if( s >= send ) break;
+		    while ((b = b64_xtable[(unsigned char)*s]) == -1 && s < send) {s++;}
+		    if (s >= send) break;
 		    s++;
-		    while((c = b64_xtable[(int)(*(unsigned char*)s)]) == -1 && s < send) { if( *s == '=' ) break; s++; }
-		    if( *s == '=' || s >= send ) break;
+		    while ((c = b64_xtable[(unsigned char)*s]) == -1 && s < send) {if (*s == '=') break; s++;}
+		    if (*s == '=' || s >= send) break;
 		    s++;
-		    while((d = b64_xtable[(int)(*(unsigned char*)s)]) == -1 && s < send) { if( *s == '=' ) break; s++; }
-		    if( *s == '=' || s >= send ) break;
+		    while ((d = b64_xtable[(unsigned char)*s]) == -1 && s < send) {if (*s == '=') break; s++;}
+		    if (*s == '=' || s >= send) break;
 		    s++;
 		    *ptr++ = a << 2 | b >> 4;
 		    *ptr++ = b << 4 | c >> 2;

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

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