Index: transcode.c =================================================================== --- transcode.c (リビジョン 5296) +++ transcode.c (作業コピー) @@ -356,11 +356,10 @@ const cups_utf8_t *src, /* I - Source string */ const int maxout) /* I - Max output */ { - cups_utf8_t *first; /* First character in string */ size_t srclen; /* Source string length */ int i; /* Looping variable */ - cups_utf32_t ch; /* Character value */ - cups_utf32_t next; /* Next character value */ + cups_utf8_t ch; /* Character value */ + cups_utf8_t next; /* Next character value */ cups_utf32_t ch32; /* UTF-32 character value */ @@ -378,13 +377,12 @@ * Convert input UTF-8 to output UTF-32 (and insert BOM)... */ - first = (cups_utf8_t *)src; *dest++ = 0xfeff; srclen = strlen((char *)src); for (i = maxout - 1; *src && i > 0; i --) { - ch = (cups_utf32_t)*src++; + ch = *src++; /* * Convert UTF-8 character(s) to UTF-32 character... @@ -404,7 +402,7 @@ * Two-octet UTF-8 <= 2047 (Latin-x)... */ - next = (cups_utf32_t)*src++; + next = *src++; if (!next) return (-1); @@ -425,13 +423,13 @@ * Three-octet UTF-8 <= 65535 (Plane 0 - BMP)... */ - next = (cups_utf32_t)*src++; + next = *src++; if (!next) return (-1); ch32 = ((ch & 0x0f) << 6) | (next & 0x3f); - next = (cups_utf32_t)*src++; + next = *src++; if (!next) return (-1); @@ -452,19 +450,19 @@ * Four-octet UTF-8... */ - next = (cups_utf32_t)*src++; + next = *src++; if (!next) return (-1); ch32 = ((ch & 0x07) << 6) | (next & 0x3f); - next = (cups_utf32_t)*src++; + next = *src++; if (!next) return (-1); ch32 = (ch32 << 6) | (next & 0x3f); - next = (cups_utf32_t)*src++; + next = *src++; if (!next) return (-1); @@ -668,7 +666,7 @@ { _cups_cmap_t *cmap; /* Legacy SBCS / Unicode Charset Map */ cups_ucs2_t *crow; /* Pointer to UCS-2 row in 'char2uni' */ - unsigned long legchar; /* Legacy character value */ + cups_utf32_t legchar; /* Legacy character value */ cups_utf32_t work[CUPS_MAX_USTRING], /* Internal UCS-4 string */ *workptr; /* Pointer into string */ @@ -687,7 +685,7 @@ work[0] = 0xfeff; for (workptr = work + 1; *src && workptr < (work + CUPS_MAX_USTRING - 1);) { - legchar = *src++ & 255; + legchar = (cups_sbcs_t)*src++; /* * Convert ASCII verbatim (optimization)... @@ -944,7 +942,7 @@ work[0] = 0xfeff; for (workptr = work + 1; *src && workptr < (work + CUPS_MAX_USTRING - 1);) { - legchar = *src++ & 255; + legchar = (cups_sbcs_t)*src++; leadchar = (cups_sbcs_t)legchar; /* @@ -966,7 +964,7 @@ if (!*src) return (-1); - legchar = (legchar << 8) | (cups_vbcs_t)(*src++ & 255); + legchar = (legchar << 8) | (cups_sbcs_t)*src++; /* * Convert unknown character to Replacement Character... @@ -992,17 +990,17 @@ if (!*src || !src[1]) return (-1); - legchar = (legchar << 8) | (cups_vbcs_t)(*src++ & 255); - legchar = (legchar << 8) | (cups_vbcs_t)(*src++ & 255); + legchar = (legchar << 8) | (cups_sbcs_t)*src++; + legchar = (legchar << 8) | (cups_sbcs_t)*src++; } else if (vmap->lead4char[(int)leadchar] == leadchar) { if (!*src || !src[1] || !src[2]) return (-1); - legchar = (legchar << 8) | (cups_vbcs_t)(*src++ & 255); - legchar = (legchar << 8) | (cups_vbcs_t)(*src++ & 255); - legchar = (legchar << 8) | (cups_vbcs_t)(*src++ & 255); + legchar = (legchar << 8) | (cups_sbcs_t)*src++; + legchar = (legchar << 8) | (cups_sbcs_t)*src++; + legchar = (legchar << 8) | (cups_sbcs_t)*src++; } else return (-1);