forked from github/server
abort on OOM
This commit is contained in:
parent
e6c11e2223
commit
e0bd5c2c7b
|
@ -135,7 +135,13 @@ static void dict_upgrade(attrib **alist, attrib *abegin) {
|
||||||
assert(!"invalid input");
|
assert(!"invalid input");
|
||||||
}
|
}
|
||||||
if (i == 4) {
|
if (i == 4) {
|
||||||
keys = realloc(keys, sizeof(int) * (n + i + 1));
|
int *k;
|
||||||
|
k = realloc(keys, sizeof(int) * (n + i + 1));
|
||||||
|
if (!k) {
|
||||||
|
free(keys);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
keys = k;
|
||||||
memcpy(keys + n + 1, val, sizeof(val));
|
memcpy(keys + n + 1, val, sizeof(val));
|
||||||
n += i;
|
n += i;
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
|
@ -123,8 +123,14 @@ static int a_readkeys(attrib * a, void *owner, gamedata *data) {
|
||||||
if (e != n) {
|
if (e != n) {
|
||||||
int sz = keys_size(n);
|
int sz = keys_size(n);
|
||||||
if (e > sz) {
|
if (e > sz) {
|
||||||
|
int *k;
|
||||||
sz = keys_size(e);
|
sz = keys_size(e);
|
||||||
keys = realloc(keys, sizeof(int)*(2 * sz + 1));
|
k = realloc(keys, sizeof(int)*(2 * sz + 1));
|
||||||
|
if (!k) {
|
||||||
|
free(keys);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
keys = k;
|
||||||
keys[0] = e;
|
keys[0] = e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,8 @@ alliance *new_alliance(int id, const char *name) {
|
||||||
al->flags |= ALF_NON_ALLIED;
|
al->flags |= ALF_NON_ALLIED;
|
||||||
}
|
}
|
||||||
al->next = alliances;
|
al->next = alliances;
|
||||||
return alliances = al;
|
alliances = al;
|
||||||
|
return al;
|
||||||
}
|
}
|
||||||
|
|
||||||
alliance *findalliance(int id)
|
alliance *findalliance(int id)
|
||||||
|
|
|
@ -340,8 +340,10 @@ void it_set_appearance(item_type *itype, const char *appearance) {
|
||||||
assert(itype);
|
assert(itype);
|
||||||
assert(itype->rtype);
|
assert(itype->rtype);
|
||||||
if (appearance) {
|
if (appearance) {
|
||||||
|
char plural[32];
|
||||||
itype->_appearance[0] = strdup(appearance);
|
itype->_appearance[0] = strdup(appearance);
|
||||||
itype->_appearance[1] = strcat(strcpy((char *)malloc(strlen((char *)appearance) + 3), (char *)appearance), "_p");
|
snprintf(plural, "%29s_p", appearance);
|
||||||
|
itype->_appearance[1] = strdup(plural);
|
||||||
} else {
|
} else {
|
||||||
itype->_appearance[0] = 0;
|
itype->_appearance[0] = 0;
|
||||||
itype->_appearance[1] = 0;
|
itype->_appearance[1] = 0;
|
||||||
|
|
|
@ -119,7 +119,12 @@ int a_readstring(attrib * a, void *owner, struct gamedata *data)
|
||||||
do {
|
do {
|
||||||
e = READ_STR(data->store, buf, sizeof(buf));
|
e = READ_STR(data->store, buf, sizeof(buf));
|
||||||
if (result) {
|
if (result) {
|
||||||
result = realloc(result, len + DISPLAYSIZE - 1);
|
char *tmp = realloc(result, len + DISPLAYSIZE - 1);
|
||||||
|
if (!tmp) {
|
||||||
|
free(result);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
result = tmp;
|
||||||
strcpy(result + len, buf);
|
strcpy(result + len, buf);
|
||||||
len += DISPLAYSIZE - 1;
|
len += DISPLAYSIZE - 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ arg_type *find_argtype(const char *name)
|
||||||
message_type *mt_new(const char *name, const char *args[])
|
message_type *mt_new(const char *name, const char *args[])
|
||||||
{
|
{
|
||||||
int i, nparameters = 0;
|
int i, nparameters = 0;
|
||||||
message_type *mtype = (message_type *)malloc(sizeof(message_type));
|
message_type *mtype;
|
||||||
|
|
||||||
assert(name != NULL);
|
assert(name != NULL);
|
||||||
if (name == NULL) {
|
if (name == NULL) {
|
||||||
|
@ -72,6 +72,7 @@ message_type *mt_new(const char *name, const char *args[])
|
||||||
/* count the number of parameters */
|
/* count the number of parameters */
|
||||||
while (args[nparameters]) ++nparameters;
|
while (args[nparameters]) ++nparameters;
|
||||||
}
|
}
|
||||||
|
mtype = (message_type *)malloc(sizeof(message_type));
|
||||||
mtype->key = 0;
|
mtype->key = 0;
|
||||||
mtype->name = strdup(name);
|
mtype->name = strdup(name);
|
||||||
mtype->nparameters = nparameters;
|
mtype->nparameters = nparameters;
|
||||||
|
@ -143,13 +144,14 @@ static void free_arg(const arg_type * atype, variant data)
|
||||||
message *msg_create(const struct message_type *mtype, variant args[])
|
message *msg_create(const struct message_type *mtype, variant args[])
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
message *msg = (message *)malloc(sizeof(message));
|
message *msg;
|
||||||
|
|
||||||
assert(mtype != NULL);
|
assert(mtype != NULL);
|
||||||
if (mtype == NULL) {
|
if (mtype == NULL) {
|
||||||
log_error("Trying to create message with type=0x0\n");
|
log_error("Trying to create message with type=0x0\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
msg = (message *)malloc(sizeof(message));
|
||||||
msg->type = mtype;
|
msg->type = mtype;
|
||||||
msg->parameters = (variant *)(mtype->nparameters ? calloc(mtype->nparameters, sizeof(variant)) : NULL);
|
msg->parameters = (variant *)(mtype->nparameters ? calloc(mtype->nparameters, sizeof(variant)) : NULL);
|
||||||
msg->refcount = 1;
|
msg->refcount = 1;
|
||||||
|
|
Loading…
Reference in New Issue