*** ./generic/tclEncoding.c.orig	Tue Nov 21 21:35:56 2000
--- ./generic/tclEncoding.c	Thu Nov 23 22:43:47 2000
***************
*** 1328,1341 ****
      TableEncodingData *dataPtr;
      unsigned short *pageMemPtr;
      Tcl_EncodingType encType;
!     char *hex;
      static char staticHex[] = {
! 	0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0,
! 	10, 11, 12, 13, 14, 15
      };
  
-     hex = staticHex - '0';
- 
      Tcl_DStringInit(&lineString);
      Tcl_Gets(chan, &lineString);
      line = Tcl_DStringValue(&lineString);
--- 1328,1358 ----
      TableEncodingData *dataPtr;
      unsigned short *pageMemPtr;
      Tcl_EncodingType encType;
! 
!     /*
!      * Speed over memory. Use a full 256 character table to decode hex
!      * sequences in the encoding files.
!      */
! 
      static char staticHex[] = {
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*   0 ...  15 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*  16 ...  31 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*  32 ...  47 */
!       0,  1,  2,  3,  4,  5,  6, 7, 8, 9, 0, 0, 0, 0, 0, 0, /*  48 ...  63 */
!       0, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*  64 ...  79 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*  80 ...  95 */
!       0, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*  96 ... 111 */
!       0,  1,  2,  3,  4,  5,  6, 7, 8, 9, 0, 0, 0, 0, 0, 0, /* 112 ... 127 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 128 ... 143 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 144 ... 159 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 160 ... 175 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 176 ... 191 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 192 ... 207 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 208 ... 223 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 224 ... 239 */
!       0,  0,  0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 240 ... 255 */
      };
  
      Tcl_DStringInit(&lineString);
      Tcl_Gets(chan, &lineString);
      line = Tcl_DStringValue(&lineString);
***************
*** 1383,1397 ****
  
  	Tcl_ReadChars(chan, objPtr, 3 + 16 * (16 * 4 + 1), 0);
  	p = Tcl_GetString(objPtr);
! 	hi = (hex[(int)p[0]] << 4) + hex[(int)p[1]];
  	dataPtr->toUnicode[hi] = pageMemPtr;
  	p += 2;
  	for (lo = 0; lo < 256; lo++) {
  	    if ((lo & 0x0f) == 0) {
  		p++;
  	    }
! 	    ch = (hex[(int)p[0]] << 12) + (hex[(int)p[1]] << 8)
! 		+ (hex[(int)p[2]] << 4) + hex[(int)p[3]];
  	    if (ch != 0) {
  		used[ch >> 8] = 1;
  	    }
--- 1400,1414 ----
  
  	Tcl_ReadChars(chan, objPtr, 3 + 16 * (16 * 4 + 1), 0);
  	p = Tcl_GetString(objPtr);
! 	hi = (staticHex[(unsigned int)p[0]] << 4) + staticHex[(unsigned int)p[1]];
  	dataPtr->toUnicode[hi] = pageMemPtr;
  	p += 2;
  	for (lo = 0; lo < 256; lo++) {
  	    if ((lo & 0x0f) == 0) {
  		p++;
  	    }
! 	    ch = (staticHex[(unsigned int)p[0]] << 12) + (staticHex[(unsigned int)p[1]] << 8)
! 		+ (staticHex[(unsigned int)p[2]] << 4) + staticHex[(unsigned int)p[3]];

  	    if (ch != 0) {
  		used[ch >> 8] = 1;
  	    }
***************
*** 1510,1516 ****
      encType.nullSize	    = (type == ENCODING_DOUBLEBYTE) ? 2 : 1;
      encType.clientData	    = (ClientData) dataPtr;
      return Tcl_CreateEncoding(&encType);
- 
  }
  
  /*
--- 1527,1532 ----
