summaryrefslogtreecommitdiff
path: root/textproc/scrollkeeper/files/patch-libs_i18n.c
blob: 16813a955b7ee90a87216f31e8a0d50d97688357 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
--- libs/i18n.c.orig	Sun Nov  9 18:05:36 2003
+++ libs/i18n.c	Tue Feb 14 18:50:23 2006
@@ -118,7 +131,7 @@ static char **compute_locale_variants(co
 		if ((i & ~mask) == 0) {
 			int length = strlen(language) + strlen(territory) 
 				+ strlen(codeset) + strlen(modifier);
-			char *var = (char *) malloc(sizeof(char) * length);
+			char *var = (char *) malloc(sizeof(char) * (length + 1));
 			check_ptr(var, "");
 
 			strcpy(var, language);
@@ -144,7 +157,8 @@ static char **compute_locale_variants(co
 	pos = 0;
 	for (i = 0; i <= mask; i++) {
 		if (progress[i] != NULL) {
-			retval[pos] = progress[i];
+			retval[pos] = strdup(progress[i]);
+			free(progress[i]);
 			++pos;
 		}
 	}
@@ -206,7 +220,7 @@ char **sk_get_language_list()
 		count++;
 	}
 	
-	tab = (char ***)malloc(sizeof(char **) * count);
+	tab = (char ***)malloc(sizeof(char **) * (count + 1));
 	
 	str = strdup(lang);
 	check_ptr(str, "");
@@ -246,7 +260,8 @@ char **sk_get_language_list()
 	while (tab[j] != NULL) {
 		k = 0;
 		while (tab[j][k] != NULL) {
-			retval[pos] = tab[j][k];
+			retval[pos] = strdup(tab[j][k]);
+			free(tab[j][k]);
 			++pos;
 			++k;
 		}