1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-11-22 21:23:01 +01:00

more error handling

This commit is contained in:
Jfreegman 2013-09-11 18:07:26 -04:00
parent f004a4ba82
commit 052f9f9936
3 changed files with 50 additions and 19 deletions

View File

@ -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;

View File

@ -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);
}
}
}

View File

@ -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;
}