mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-22 21:53:05 +01:00
more error handling
This commit is contained in:
parent
f004a4ba82
commit
052f9f9936
18
src/chat.c
18
src/chat.c
@ -142,12 +142,22 @@ static char *wcs_to_char(wchar_t *string)
|
||||
if (len != (size_t) -1) {
|
||||
len++;
|
||||
ret = malloc(len);
|
||||
if (ret != NULL)
|
||||
wcstombs(ret, string, len);
|
||||
} else {
|
||||
ret = malloc(2);
|
||||
if (ret != NULL) {
|
||||
ret[0] = ' ';
|
||||
ret[1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == NULL) {
|
||||
fprintf(stderr, "malloc() failed. Aborting...\n");
|
||||
endwin();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -533,8 +543,16 @@ ToxWindow new_chat(Tox *m, ToxWindow *prompt, int friendnum)
|
||||
|
||||
ChatContext *x = calloc(1, sizeof(ChatContext));
|
||||
StatusBar *s = calloc(1, sizeof(StatusBar));
|
||||
|
||||
|
||||
if (s != NULL && x != NULL) {
|
||||
ret.x = x;
|
||||
ret.s = s;
|
||||
} else {
|
||||
fprintf(stderr, "calloc() failed. Aborting...\n");
|
||||
endwin();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
ret.prompt = prompt;
|
||||
ret.friendnum = friendnum;
|
||||
|
21
src/main.c
21
src/main.c
@ -317,14 +317,14 @@ static void load_data(Tox *m, char *path)
|
||||
buf = malloc(len);
|
||||
|
||||
if (buf == NULL) {
|
||||
fprintf(stderr, "malloc() failed.\n");
|
||||
fprintf(stderr, "malloc() failed. Aborting...\n");
|
||||
fclose(fd);
|
||||
endwin();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (fread(buf, len, 1, fd) != 1) {
|
||||
fprintf(stderr, "fread() failed.\n");
|
||||
fprintf(stderr, "fread() failed. Aborting...\n");
|
||||
free(buf);
|
||||
fclose(fd);
|
||||
endwin();
|
||||
@ -357,13 +357,9 @@ static void load_data(Tox *m, char *path)
|
||||
void exit_toxic(Tox *m)
|
||||
{
|
||||
store_data(m, DATA_FILE);
|
||||
|
||||
if (DATA_FILE != NULL)
|
||||
free(DATA_FILE);
|
||||
|
||||
if (SRVLIST_FILE != NULL)
|
||||
free(SRVLIST_FILE);
|
||||
|
||||
free(prompt->s);
|
||||
tox_kill(m);
|
||||
endwin();
|
||||
exit(EXIT_SUCCESS);
|
||||
@ -401,17 +397,20 @@ int main(int argc, char *argv[])
|
||||
SRVLIST_FILE = strdup(PACKAGE_DATADIR "/DHTservers");
|
||||
} else {
|
||||
DATA_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("data") + 1);
|
||||
if (DATA_FILE != NULL) {
|
||||
SRVLIST_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("DHTservers") + 1);
|
||||
|
||||
if (DATA_FILE != NULL && SRVLIST_FILE != NULL) {
|
||||
strcpy(DATA_FILE, user_config_dir);
|
||||
strcat(DATA_FILE, CONFIGDIR);
|
||||
strcat(DATA_FILE, "data");
|
||||
}
|
||||
|
||||
SRVLIST_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("DHTservers") + 1);
|
||||
if (SRVLIST_FILE != NULL) {
|
||||
strcpy(SRVLIST_FILE, user_config_dir);
|
||||
strcat(SRVLIST_FILE, CONFIGDIR);
|
||||
strcat(SRVLIST_FILE, "DHTservers");
|
||||
} else {
|
||||
fprintf(stderr, "malloc() failed. Aborting...\n");
|
||||
endwin();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
14
src/prompt.c
14
src/prompt.c
@ -113,6 +113,13 @@ unsigned char *hex_string_to_bin(char hex_string[])
|
||||
{
|
||||
size_t len = strlen(hex_string);
|
||||
unsigned char *val = malloc(len);
|
||||
|
||||
if (val == NULL) {
|
||||
fprintf(stderr, "malloc() failed. Aborting...\n");
|
||||
endwin();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
char *pos = hex_string;
|
||||
int i;
|
||||
|
||||
@ -688,7 +695,14 @@ ToxWindow new_prompt()
|
||||
strcpy(ret.name, "prompt");
|
||||
|
||||
StatusBar *s = calloc(1, sizeof(StatusBar));
|
||||
|
||||
if (s != NULL)
|
||||
ret.s = s;
|
||||
else {
|
||||
fprintf(stderr, "calloc() failed. Aborting...\n");
|
||||
endwin();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user