Skip to content

Commit

Permalink
flagged by static analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
ennorehling committed Jun 16, 2024
1 parent b65b451 commit 1915705
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 32 deletions.
2 changes: 1 addition & 1 deletion src/battle.c
Original file line number Diff line number Diff line change
Expand Up @@ -1643,7 +1643,7 @@ static void report_failed_spell(struct battle * b, struct unit * mage, const str
}

static castorder * create_castorder_combat(castorder *co, fighter *fig, const spell * sp, int level, double force) {
co = create_castorder(co, fig->unit, 0, sp, fig->unit->region, level, force, 0, 0, 0);
create_castorder(co, fig->unit, 0, sp, fig->unit->region, level, force, 0, 0, 0);
co->magician.fig = fig;
return co;
}
Expand Down
2 changes: 2 additions & 0 deletions src/gmtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -1231,6 +1231,8 @@ static void show_help(void)

if (!exit) ch = getch();
}
delwin(pad);
delwin(wn);
}

static void handlekey(state * st, int c)
Expand Down
52 changes: 27 additions & 25 deletions src/magic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1979,8 +1979,11 @@ static spellparameter *add_spellparameters(region * target_r, unit * u,
if (err) {
ADDMSG(&u->faction->msgs, err);
if (par) {
free_spellparameter(par);
par = NULL;
size_t i;
for (i = arrlen(par); i > 0; --i) {
free_spellparameter(par + i - 1);
}
arrfree(par);
}
}
return par;
Expand All @@ -1998,13 +2001,10 @@ struct region * co_get_region(const struct castorder * co) {
return co->_rtarget;
}

castorder *create_castorder(castorder * co, unit *caster, unit * familiar, const spell * sp, region * r,
void create_castorder(castorder * co, unit *caster, unit * familiar, const spell * sp, region * r,
int lev, double force, int range, struct order * ord, spellparameter * a_params)
{
if (!co) co = malloc(sizeof(castorder));
if (!co) abort();

assert(a_params == NULL || arrlen(a_params) > 0);
assert(co && a_params == NULL || arrlen(a_params) > 0);
co->next = NULL;
co->magician.u = caster;
co->_familiar = familiar;
Expand All @@ -2015,8 +2015,6 @@ castorder *create_castorder(castorder * co, unit *caster, unit * familiar, const
co->distance = range;
co->order = copy_order(ord);
co->a_params = a_params;

return co;
}

void free_castorder(struct castorder *co)
Expand Down Expand Up @@ -2472,16 +2470,17 @@ static castorder *cast_cmd(unit * u, order * ord)
spellparameter *args = NULL;
unit * mage = NULL;
param_t param;
castorder *result = NULL;

assert(u);
if (LongHunger(u)) {
cmistake(u, ord, 224, MSG_MAGIC);
return 0;
return NULL;
}
pl = getplane(r);
if (pl && fval(pl, PFL_NOMAGIC)) {
cmistake(u, ord, 269, MSG_MAGIC);
return 0;
return NULL;
}

init_order(ord, NULL);
Expand All @@ -2505,7 +2504,7 @@ static castorder *cast_cmd(unit * u, order * ord)
/* Fehler "Die Region konnte nicht verzaubert werden" */
ADDMSG(&u->faction->msgs, msg_message("spellregionresists",
"unit region command", u, u->region, ord));
return 0;
return NULL;
}
s = gettoken(token, sizeof(token));
param = get_param(s, u->faction->locale);
Expand All @@ -2518,7 +2517,7 @@ static castorder *cast_cmd(unit * u, order * ord)
if (!s || !s[0]) {
/* Fehler "Es wurde kein Zauber angegeben" */
cmistake(u, ord, 172, MSG_MAGIC);
return 0;
return NULL;
}

/**
Expand Down Expand Up @@ -2554,7 +2553,7 @@ static castorder *cast_cmd(unit * u, order * ord)
if (sp == NULL || sp->sptyp & NOTFAMILIARCAST) {
/* Fehler: "Diesen Spruch kann der Vertraute nicht zaubern" */
cmistake(u, ord, 177, MSG_MAGIC);
return 0;
return NULL;
}
familiar = u;
}
Expand All @@ -2564,13 +2563,13 @@ static castorder *cast_cmd(unit * u, order * ord)
if (!sp || !mage) {
/* Fehler 'Spell not found' */
cmistake(u, ord, 173, MSG_MAGIC);
return 0;
return NULL;
}

if (sp->sptyp & ISCOMBATSPELL) {
/* Fehler: "Dieser Zauber ist nur im Kampf sinnvoll" */
cmistake(u, ord, 174, MSG_MAGIC);
return 0;
return NULL;
}

/* Auf dem Ozean Zaubern als quasi-langer Befehl koennen
Expand All @@ -2583,7 +2582,7 @@ static castorder *cast_cmd(unit * u, order * ord)
/* Fehlermeldung */
ADDMSG(&u->faction->msgs, msg_message("spellfail_onocean",
"unit region command", u, u->region, ord));
return 0;
return NULL;
}
/* Auf bewegenden Schiffen kann man nur explizit als
* ONSHIPCAST deklarierte Zauber sprechen */
Expand All @@ -2594,7 +2593,7 @@ static castorder *cast_cmd(unit * u, order * ord)
/* Fehler: "Diesen Spruch kann man nicht auf einem sich
* bewegenden Schiff stehend zaubern" */
cmistake(u, ord, 175, MSG_MAGIC);
return 0;
return NULL;
}
}
}
Expand All @@ -2605,19 +2604,19 @@ static castorder *cast_cmd(unit * u, order * ord)
/* Fehler "Diesen Spruch kann man nicht in die Ferne
* richten" */
cmistake(u, ord, 176, MSG_MAGIC);
return 0;
return NULL;
}
if (familiar) {
/* Magier zaubert durch Vertrauten: keine Fernzauber erlaubt */
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "familiar_farcast",
"mage", mage));
return 0;
return NULL;
}
if (range > 1024) {
/* (2^10) weiter als 10 Regionen entfernt */
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "spellfail::nocontact",
"target", target_r));
return 0;
return NULL;
}
}
if (familiar) {
Expand All @@ -2644,7 +2643,7 @@ static castorder *cast_cmd(unit * u, order * ord)
if (level > skill) {
/* die Einheit ist nicht erfahren genug fuer diesen Zauber */
cmistake(u, ord, 169, MSG_MAGIC);
return 0;
return NULL;
}
}
else if (!(sp->sptyp & SPELLLEVEL)) {
Expand Down Expand Up @@ -2684,11 +2683,14 @@ static castorder *cast_cmd(unit * u, order * ord)
}
if (args == NULL) {
/* Syntax war falsch */
return 0;
return NULL;
}
}
return create_castorder(0, mage, familiar, sp, target_r, level, 0, range, ord,
args);
result = malloc(sizeof(castorder));
if (result) {
create_castorder(result, mage, familiar, sp, target_r, level, 0, range, ord, args);
}
return result;
}

/* ------------------------------------------------------------- */
Expand Down
2 changes: 1 addition & 1 deletion src/magic.h
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ extern "C" {
struct castorder **handle_end;
} spellrank;

struct castorder *create_castorder(struct castorder * co, struct unit *caster,
void create_castorder(struct castorder * co, struct unit *caster,
struct unit * familiar, const struct spell * sp, struct region * r,
int lev, double force, int range, struct order * ord, struct spellparameter * a_params);
void free_castorder(struct castorder *co);
Expand Down
2 changes: 1 addition & 1 deletion src/reports.c
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ static void spskill(struct skill* sv, const struct unit *u, const struct locale

if (sv->id == SK_MAGIC) {
magic_t mtype = unit_get_magic(u);
if (mtype != M_GRAY && mtype != M_NONE) {
if (mtype != M_NONE && mtype != M_GRAY && mtype < MAXMAGIETYP) {
sbs_strcat(sbp, magic_name(mtype, lang));
sbs_strcat(sbp, " ");
}
Expand Down
6 changes: 3 additions & 3 deletions src/spells.c
Original file line number Diff line number Diff line change
Expand Up @@ -5020,7 +5020,7 @@ int sp_enterastral(castorder * co)

/** Spell 'Astraler Ruf' / 'Astral Call'.
*/
int sp_pullastral(castorder * co)
int sp_pullastral(castorder *co)
{
region *rt, *ro;
unit *u;
Expand All @@ -5029,7 +5029,7 @@ int sp_pullastral(castorder * co)
unit *mage = co_get_caster(co);
int cast_level = co->level;
double power = co->force;
spellparameter* params = co->a_params;
spellparameter *params = co->a_params;
size_t n, len = arrlen(params);

switch (getplaneid(r)) {
Expand All @@ -5048,7 +5048,7 @@ int sp_pullastral(castorder * co)
return 0;
}

if (is_cursed(rt->attribs, &ct_astralblock)
if (!ro || is_cursed(rt->attribs, &ct_astralblock)
|| is_cursed(ro->attribs, &ct_astralblock)) {
ADDMSG(&mage->faction->msgs, msg_feedback(mage, co->order,
"spellfail_astralblock", ""));
Expand Down
2 changes: 1 addition & 1 deletion src/tests.c
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@ building_type *test_create_castle(void) {
}

if (!btype->a_stages) {
building_stage *stages = arraddnptr(btype->a_stages, 7);
building_stage *stages = arrsetlen(btype->a_stages, 7);
btype->flags |= BTF_FORTIFICATION;
init_stage(stages + 0, 1, 2, "site", rtype);
init_stage(stages + 1, 1, 8, "tradepost", rtype);
Expand Down

0 comments on commit 1915705

Please sign in to comment.