4
0
Эх сурвалжийг харах

Fix crash in core/userrec.c:welcome_suser() if no language selected

Michael Ortmann 5 жил өмнө
parent
commit
8a68fef4be
3 өөрчлөгдсөн 10 нэмэгдсэн , 9 устгасан
  1. 1 0
      UPDATES
  2. 8 5
      core/slang.c
  3. 1 4
      core/userrec.c

+ 1 - 0
UPDATES

@@ -3,6 +3,7 @@ Changes in Stats.mod: (since v1.0.1)
 1.5.0
 - Now also works with eggdrop 1.8. stats 1.4.1 does not work with
   eggdrop 1.8-rc1+ / git ac1b6ed3f4f949affd7090a053787fb664f4e292+.
+- Fix crash if no language selected.
 
 1.4.1
 - Now also works with eggdrop 1.8.

+ 8 - 5
core/slang.c

@@ -245,7 +245,7 @@ static char *getslang(int id)
   char *text;
 
   if (!glob_slang) {
-    putlog(LOG_MISC, "*", "WARNING! No language selected! (getslang())");
+    putlog(LOG_MISC, "*", "Stats warning: no language selected. (getslang())");
     return "NOLANG";
   }
   text = slang_id_get(glob_slang->ids, id);
@@ -262,7 +262,7 @@ static char *getdur(int idx)
 
   Assert((idx >= 0) && (idx < DURATIONS));
   if (!glob_slang) {
-    putlog(LOG_MISC, "*", "WARNING! No language selected! (getdur())");
+    putlog(LOG_MISC, "*", "Stats warning: no language selected. (getdur())");
     return "NOLANG";
   }
   text = slang_duration_get(glob_slang->durations, idx);
@@ -279,7 +279,7 @@ static char *getslangtype(char *type)
   char *stype;
 
   if (!glob_slang) {
-    putlog(LOG_MISC, "*", "WARNING! No language selected! (getslangtype())");
+    putlog(LOG_MISC, "*", "Stats warning: no language selected. (getslangtype())");
     return "NOLANG";
   }
   stype = slang_type_get(glob_slang->types, type);
@@ -294,7 +294,7 @@ static int slangtypetoi(char *slangtype)
   char *type;
 
   if (!glob_slang) {
-    putlog(LOG_MISC, "*", "WARNING! No language selected! (slangtypetoi())");
+    putlog(LOG_MISC, "*", "Stats warning: no language selected. (slangtypetoi())");
     return T_ERROR;
   }
   type = slang_type_slang2type(glob_slang->types, slangtype);
@@ -312,7 +312,7 @@ static char *getslang_first(int id)
   char *text;
 
   if (!glob_slang) {
-    putlog(LOG_MISC, "*", "WARNING! No language selected! (getslang())");
+    putlog(LOG_MISC, "*", "Stats warning: no language selected. (getslang_first())");
     return "NOLANG";
   }
   text = slang_id_get_first(glob_slang->ids, id);
@@ -325,6 +325,9 @@ static char *getslang_first(int id)
 
 static char *getslang_next()
 {
+  if (!glob_slang) {
+    return NULL;
+  }
   return slang_id_get_next();
 }
 #endif

+ 1 - 4
core/userrec.c

@@ -282,11 +282,8 @@ static void welcome_suser(char *nick, struct stats_userlist *u, char *chan)
   glob_user = u;
   glob_nick = nick;
   glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, chan));
-  if ((text = getslang_first(500))) {
+  for (text = getslang_first(500); text; text = getslang_next())
     dprintf(DP_HELP, "NOTICE %s :%s\n", nick, text);
-    while ((text = getslang_next()))
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, text);
-  }
 }
 
 static int listsuser(locstats *ls, char *chan)