Merge pull request #141 from mdboom/avoid-using-utf8tostring

Avoid using UTF8ToString
This commit is contained in:
Roman Yurchak 2018-09-06 07:52:45 +02:00 committed by GitHub
commit 4da3106ae8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 4 deletions

View File

@ -67,6 +67,10 @@ EM_JS(int, hiwire_string_utf8, (int ptr), {
return Module.hiwire_new_value(UTF8ToString(ptr)); return Module.hiwire_new_value(UTF8ToString(ptr));
}); });
EM_JS(int, hiwire_string_ascii, (int ptr), {
return Module.hiwire_new_value(AsciiToString(ptr));
});
EM_JS(int, hiwire_bytes, (int ptr, int len), { EM_JS(int, hiwire_bytes, (int ptr, int len), {
var bytes = new Uint8ClampedArray(Module.HEAPU8.buffer, ptr, len); var bytes = new Uint8ClampedArray(Module.HEAPU8.buffer, ptr, len);
return Module.hiwire_new_value(bytes); return Module.hiwire_new_value(bytes);

View File

@ -86,6 +86,16 @@ hiwire_string_ucs1(int ptr, int len);
int int
hiwire_string_utf8(int ptr); hiwire_string_utf8(int ptr);
/**
* Create a new Javascript string, given a pointer to a null-terminated buffer
* containing ascii (well, technically latin-1). The string data itself is
* copied.
*
* Returns: New reference
*/
int
hiwire_string_ascii(int ptr);
/** /**
* Create a new Javascript Uint8ClampedArray, given a pointer to a buffer and a * Create a new Javascript Uint8ClampedArray, given a pointer to a buffer and a
* length, in bytes. * length, in bytes.

View File

@ -21,7 +21,7 @@ pythonexc2js()
int exc; int exc;
if (type == NULL || type == Py_None || value == NULL || value == Py_None) { if (type == NULL || type == Py_None || value == NULL || value == Py_None) {
excval = hiwire_string_utf8((int)"No exception type or value"); excval = hiwire_string_ascii((int)"No exception type or value");
PyErr_Print(); PyErr_Print();
PyErr_Clear(); PyErr_Clear();
goto exit; goto exit;
@ -31,7 +31,7 @@ pythonexc2js()
if (tbmod == NULL) { if (tbmod == NULL) {
PyObject* repr = PyObject_Repr(value); PyObject* repr = PyObject_Repr(value);
if (repr == NULL) { if (repr == NULL) {
excval = hiwire_string_utf8((int)"Could not get repr for exception"); excval = hiwire_string_ascii((int)"Could not get repr for exception");
} else { } else {
excval = python2js(repr); excval = python2js(repr);
Py_DECREF(repr); Py_DECREF(repr);
@ -46,7 +46,7 @@ pythonexc2js()
} }
if (format_exception == NULL) { if (format_exception == NULL) {
excval = excval =
hiwire_string_utf8((int)"Could not get format_exception function"); hiwire_string_ascii((int)"Could not get format_exception function");
} else { } else {
PyObject* pylines; PyObject* pylines;
if (no_traceback) { if (no_traceback) {
@ -58,7 +58,7 @@ pythonexc2js()
} }
if (pylines == NULL) { if (pylines == NULL) {
excval = excval =
hiwire_string_utf8((int)"Error calling traceback.format_exception"); hiwire_string_ascii((int)"Error calling traceback.format_exception");
PyErr_Print(); PyErr_Print();
PyErr_Clear(); PyErr_Clear();
goto exit; goto exit;