OSDN Git Service

Fix some signedness warnings.
[android-x86/external-exfat.git] / libexfat / utf.c
index 0d0018c..8d96329 100644 (file)
@@ -104,20 +104,22 @@ static const le16_t* utf16_to_wchar(const le16_t* input, wchar_t* wc,
 int utf16_to_utf8(char* output, const le16_t* input, size_t outsize,
                size_t insize)
 {
-       const le16_t* inp = input;
-       char* outp = output;
+       const le16_t* iptr = input;
+       const le16_t* iend = input + insize;
+       char* optr = output;
+       const char* oend = output + outsize;
        wchar_t wc;
 
-       while (inp - input < insize)
+       while (iptr < iend)
        {
-               inp = utf16_to_wchar(inp, &wc, insize - (inp - input));
-               if (inp == NULL)
+               iptr = utf16_to_wchar(iptr, &wc, iend - iptr);
+               if (iptr == NULL)
                {
                        exfat_error("illegal UTF-16 sequence");
                        return -EILSEQ;
                }
-               outp = wchar_to_utf8(outp, wc, outsize - (outp - output));
-               if (outp == NULL)
+               optr = wchar_to_utf8(optr, wc, oend - optr);
+               if (optr == NULL)
                {
                        exfat_error("name is too long");
                        return -ENAMETOOLONG;
@@ -125,12 +127,12 @@ int utf16_to_utf8(char* output, const le16_t* input, size_t outsize,
                if (wc == 0)
                        return 0;
        }
-       if (outp - output >= outsize)
+       if (optr >= oend)
        {
                exfat_error("name is too long");
                return -ENAMETOOLONG;
        }
-       *outp = '\0';
+       *optr = '\0';
        return 0;
 }
 
@@ -205,20 +207,22 @@ static le16_t* wchar_to_utf16(le16_t* output, wchar_t wc, size_t outsize)
 int utf8_to_utf16(le16_t* output, const char* input, size_t outsize,
                size_t insize)
 {
-       const char* inp = input;
-       le16_t* outp = output;
+       const char* iptr = input;
+       const char* iend = input + insize;
+       le16_t* optr = output;
+       const le16_t* oend = output + outsize;
        wchar_t wc;
 
-       while (inp - input < insize)
+       while (iptr < iend)
        {
-               inp = utf8_to_wchar(inp, &wc, insize - (inp - input));
-               if (inp == NULL)
+               iptr = utf8_to_wchar(iptr, &wc, iend - iptr);
+               if (iptr == NULL)
                {
                        exfat_error("illegal UTF-8 sequence");
                        return -EILSEQ;
                }
-               outp = wchar_to_utf16(outp, wc, outsize - (outp - output));
-               if (outp == NULL)
+               optr = wchar_to_utf16(optr, wc, oend - optr);
+               if (optr == NULL)
                {
                        exfat_error("name is too long");
                        return -ENAMETOOLONG;
@@ -226,12 +230,12 @@ int utf8_to_utf16(le16_t* output, const char* input, size_t outsize,
                if (wc == 0)
                        break;
        }
-       if (outp - output >= outsize)
+       if (optr >= oend)
        {
                exfat_error("name is too long");
                return -ENAMETOOLONG;
        }
-       *outp = cpu_to_le16(0);
+       *optr = cpu_to_le16(0);
        return 0;
 }