diff --git a/xwords4/android/XWords4/jni/xwjni.c b/xwords4/android/XWords4/jni/xwjni.c index 51fb6851d..c74f1d402 100644 --- a/xwords4/android/XWords4/jni/xwjni.c +++ b/xwords4/android/XWords4/jni/xwjni.c @@ -293,7 +293,9 @@ Java_org_eehouse_android_xw4_jni_XwJNI_dict_1getInfo jDictBytes, jpath, NULL, check ); if ( NULL != dict ) { if ( NULL != jinfo ) { - setInt( env, jinfo, "langCode", dict_getLangCode( dict ) ); + XP_LangCode code = dict_getLangCode( dict ); + XP_ASSERT( 0 < code ); + setInt( env, jinfo, "langCode", code ); setInt( env, jinfo, "wordCount", dict_getWordCount( dict ) ); setString( env, jinfo, "md5Sum", dict_getMd5Sum( dict ) ); } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictLangCache.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictLangCache.java index b4dc446dc..12400f661 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictLangCache.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictLangCache.java @@ -381,6 +381,14 @@ public class DictLangCache { private static DictInfo getInfo( Context context, DictAndLoc dal ) { DictInfo info = DBUtils.dictsGetInfo( context, dal.name ); + + // Tmp test that recovers from problem with new background download code + if ( null != info && 0 == info.langCode ) { + DbgUtils.logf( "getInfo: dropping info for %s b/c lang code wrong", + dal.name ); + info = null; + } + if ( null == info ) { String[] names = { dal.name }; DictUtils.DictPairs pairs = DictUtils.openDicts( context, names ); diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java index ab6a79c7d..f978c3bd5 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java @@ -584,11 +584,11 @@ public class GameUtils { String[][] missingNames, int[] missingLang ) { - String[] dictNames = dictNames( context, rowid, missingLang ); + String[] gameDicts = dictNames( context, rowid, missingLang ); HashSet missingSet; DictUtils.DictAndLoc[] installed = DictUtils.dictList( context ); - missingSet = new HashSet( Arrays.asList( dictNames ) ); + missingSet = new HashSet( Arrays.asList( gameDicts ) ); missingSet.remove( null ); boolean allHere = 0 != missingSet.size(); // need some non-null! if ( allHere ) { @@ -596,6 +596,8 @@ public class GameUtils { missingSet.remove( dal.name ); } allHere = 0 == missingSet.size(); + } else { + DbgUtils.logf( "gameDictsHere: game has no dicts!" ); } if ( null != missingNames ) { missingNames[0] = diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/CurGameInfo.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/CurGameInfo.java index 660cf1bc0..ea68e4f58 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/CurGameInfo.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/CurGameInfo.java @@ -143,7 +143,9 @@ public class CurGameInfo { public void setLang( int lang, String dict ) { - dictName = dict; + if ( null != dict ) { + dictName = dict; + } setLang( lang ); }