Don't call .toString() on potentially null CharSequence

We're building an exception message string, but by explicitly invoking
.toString() we're accidentally triggering an NPE rather than the typed
exception we want to throw.  Build the string in a way that will be
safe and sensical even if the CharSequence is null.

Bug 29009255

Change-Id: I1813260f0b36fd44506b8327f997dd20c2d6c8bf
This commit is contained in:
Christopher Tate
2016-05-27 17:10:30 -07:00
parent efa291a860
commit f135b271bf

View File

@@ -292,8 +292,10 @@ public class ResourcesImpl {
return mAssets.openNonAsset(value.assetCookie, value.string.toString(),
AssetManager.ACCESS_STREAMING);
} catch (Exception e) {
NotFoundException rnf = new NotFoundException("File " + value.string.toString() +
" from drawable resource ID #0x" + Integer.toHexString(id));
// Note: value.string might be null
NotFoundException rnf = new NotFoundException("File "
+ (value.string == null ? "(null)" : value.string.toString())
+ " from drawable resource ID #0x" + Integer.toHexString(id));
rnf.initCause(e);
throw rnf;
}