зеркало из https://github.com/mozilla/gecko-dev.git
Bug 819164 - reply_len is only valid before we call readString because of UTF-8 interpretation so do our string fixup based on that. r=gal, a=blocking-basecamp
This commit is contained in:
Родитель
42a4976a33
Коммит
9196f44086
|
@ -45,11 +45,22 @@ self.onmessage = function(e) {
|
|||
var ret = libhardware_legacy.command(data.request, cbuf, len.address());
|
||||
var reply = "";
|
||||
if (!ret) {
|
||||
// The return value from libhardware_legacy.command is not guaranteed to
|
||||
// be null-terminated. At the same time we want to make sure that we
|
||||
// don't return a response with a trailing newline, so handle both cases
|
||||
// here. Note that if we wrote 4096 characters to cbuf, we don't have to
|
||||
// null-terminate the buffer, as ctypes has the maximum size already.
|
||||
var reply_len = len.value;
|
||||
var str = cbuf.readString();
|
||||
if (str[reply_len-1] == "\n")
|
||||
--reply_len;
|
||||
reply = str.substr(0, reply_len);
|
||||
if (reply_len !== 0) {
|
||||
if (cbuf[reply_len - 1] === 10)
|
||||
cbuf[--reply_len] = 0;
|
||||
else if (reply_len !== 4096)
|
||||
cbuf[reply_len] = 0;
|
||||
|
||||
reply = cbuf.readString();
|
||||
}
|
||||
|
||||
// Else if reply_len was 0, use the empty reply, set above.
|
||||
}
|
||||
postMessage({ id: id, status: ret, reply: reply });
|
||||
break;
|
||||
|
|
Загрузка…
Ссылка в новой задаче