Fix order of operation issue with ResStringPool

Due to ! taking precedence over bitwise &, the condition for
checking non-null terminated string blocks is incorrect.

Adds parentheses for the correct behavior.

Bug:28288210
Change-Id: Ie31fa239e5f869e6bb28deb6ae190f41f1aa4d92
This commit is contained in:
Adam Lesinski
2016-04-21 10:05:06 -07:00
parent 3053c3f2a9
commit 666b6fbba1

View File

@@ -562,7 +562,7 @@ status_t ResStringPool::setTo(const void* data, size_t size, bool copyData)
if ((mHeader->flags&ResStringPool_header::UTF8_FLAG &&
((uint8_t*)mStrings)[mStringPoolSize-1] != 0) ||
(!mHeader->flags&ResStringPool_header::UTF8_FLAG &&
(!(mHeader->flags&ResStringPool_header::UTF8_FLAG) &&
((uint16_t*)mStrings)[mStringPoolSize-1] != 0)) {
ALOGW("Bad string block: last string is not 0-terminated\n");
return (mError=BAD_TYPE);