]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - fs/nls/nls_base.c
Merge commit 'v2.6.32-rc4' into perf/core
[net-next-2.6.git] / fs / nls / nls_base.c
index 2224b4d07bf0116b478f9d8cf565c424f9b64b78..44a88a9fa2c87724408fb1268cb46b84b87b3746 100644 (file)
@@ -124,10 +124,10 @@ int utf8s_to_utf16s(const u8 *s, int len, wchar_t *pwcs)
        while (*s && len > 0) {
                if (*s & 0x80) {
                        size = utf8_to_utf32(s, len, &u);
-                       if (size < 0) {
-                               /* Ignore character and move on */
-                               size = 1;
-                       } else if (u >= PLANE_SIZE) {
+                       if (size < 0)
+                               return -EINVAL;
+
+                       if (u >= PLANE_SIZE) {
                                u -= PLANE_SIZE;
                                *op++ = (wchar_t) (SURROGATE_PAIR |
                                                ((u >> 10) & SURROGATE_BITS));