Fixed crash when LANG system's variable is not defined.
authorRicardo Cruz <rick2@aeiou.pt>
Fri, 9 Jul 2004 22:16:50 +0000 (22:16 +0000)
committerRicardo Cruz <rick2@aeiou.pt>
Fri, 9 Jul 2004 22:16:50 +0000 (22:16 +0000)
SVN-Revision: 1559

src/lispreader.cpp
src/worldmap.cpp

index 2c49aad..839ceef 100644 (file)
@@ -1218,19 +1218,26 @@ LispReader::read_string (const char* name, std::string& str, bool translatable)
      (text-fr "Bonjour Monde!")
      being fr the value of LANG (echo $LANG) for the language we want to translate to */
 
+    char* lang = getenv("LANG");
+
     char str_[1024];  // check, for instance, for (title-fr_FR "Bonjour")
-    sprintf(str_, "%s-%s", name, getenv("LANG"));
+    sprintf(str_, "%s-%s", name, lang);
 
     obj = search_for (str_);
 
     if(!obj)  // check, for instance, for (title-fr "Bonjour")
       {
-      char lang[3];
-      strncpy(lang, getenv("LANG"), 2);
-      lang[2] = '\0';
-      sprintf(str_, "%s-%s", name, lang);
+      if(strlen(lang) >= 2)
+        {
+        char lang_[3];
+        strncpy(lang_, lang, 2);
+        lang_[2] = '\0';
+        sprintf(str_, "%s-%s", name, lang_);
 
-      obj = search_for (str_);
+        obj = search_for (str_);
+        }
+      else
+        obj = 0;
       }
 
     if(!obj)  // check, for instance, for (title "Hello")
index 546db1e..2f56ab3 100644 (file)
@@ -361,7 +361,7 @@ WorldMap::WorldMap()
   input_direction = D_NONE;
   enter_level = false;
 
-  name = "<no file>";
+  name = "<no title>";
   music = "SALCON.MOD";
 }