Avoid a crash in nativeStateExtractDiskPaths()

This commit is contained in:
Aaron Culliney 2017-06-07 02:21:48 -07:00
parent c731c2a310
commit 2a263e2418
3 changed files with 6 additions and 7 deletions

View File

@ -551,18 +551,21 @@ jstring Java_org_deadc0de_apple2ix_Apple2Activity_nativeStateExtractDiskPaths(JN
LOG(": (%s)", path);
JSON_ref jsonData;
bool ret = json_createFromString("{}", &jsonData);
assert(ret >= 0 && "should be able to create JSON");
if (!emulator_stateExtractDiskPaths(path, &jsonData)) {
LOG("OOPS, could not extract disk paths from emulator state file");
}
(*env)->ReleaseStringUTFChars(env, jPath, path);
char *jsonString = ((JSON_s *)jsonData)->jsonString;
jstring jstr = (*env)->NewStringUTF(env, jsonString);
json_destroy(&jsonData);
(*env)->ReleaseStringUTFChars(env, jPath, path);
return jstr;
}

View File

@ -1126,11 +1126,6 @@ static bool _disk6_loadState(StateHelper_s *helper, JSON_ref *json) {
do {
if (json != NULL) {
if (!json_createFromString("{}", json)) {
LOG("OOPS, could not create JSON!");
break;
}
json_mapSetStringValue(*json, "diskA", "");
json_mapSetStringValue(*json, "diskB", "");
json_mapSetBoolValue(*json, "readOnlyA", "true");

View File

@ -288,6 +288,7 @@ bool emulator_stateExtractDiskPaths(const char * const path, JSON_ref *json) {
do {
TEMP_FAILURE_RETRY(fd = open(path, O_RDONLY));
if (fd < 0) {
ERRLOG("OOPS, cannot open path %s", path);
break;
}
assert(fd != 0 && "crazy platform");