else
v = PyUnicode_Decode(s, len, encoding, errors);
done:
- if (owned)
+ if (owned) {
Py_DECREF(obj);
+ }
return v;
onError:
- if (owned)
+ if (owned) {
Py_DECREF(obj);
+ }
return NULL;
}
}
#define UTF8_ERROR(details) \
- if (1) { \
+ do { \
if (utf8_decoding_error(&s, &p, errors, (details))) \
goto onError; \
- continue; \
- } else
+ goto nextchar; \
+ } while (0)
PyObject *PyUnicode_DecodeUTF8(const char *s,
int size,
UTF8_ERROR("unsupported Unicode code range");
}
s += n;
+
+ nextchar:
+ ;
}
/* Adjust length */
#undef UTF8_ERROR
+/* NOT USED */
+#if 0
static
int utf8_encoding_error(const Py_UNICODE **source,
char **dest,
return -1;
}
}
+#endif /* NOT USED */
PyObject *PyUnicode_EncodeUTF8(const Py_UNICODE *s,
int size,
ch = ((ch - 0xD800)<<10 | (ch2-0xDC00))+0x10000;
*p++ = (char)((ch >> 18) | 0xf0);
- *p++ = (char)(0x80 | (ch >> 12) & 0x3f);
+ *p++ = (char)(0x80 | ((ch >> 12) & 0x3f));
i++;
cbWritten += 4;
}