forked from github/server
Merge pull request #888 from ennorehling/develop
fix tree growth crash, cew CR version
This commit is contained in:
commit
356bb54bf3
|
@ -2933,7 +2933,7 @@ static void print_stats(battle * b)
|
||||||
header = LOC(f->locale, "battle_helpers");
|
header = LOC(f->locale, "battle_helpers");
|
||||||
|
|
||||||
for (s2 = b->sides; s2 != b->sides + b->nsides; ++s2) {
|
for (s2 = b->sides; s2 != b->sides + b->nsides; ++s2) {
|
||||||
if (friendly(s2, s)) {
|
if (s2 != s && friendly(s2, s)) {
|
||||||
const char *abbrev = seematrix(f, s2) ? sideabkz(s2, false) : "-?-";
|
const char *abbrev = seematrix(f, s2) ? sideabkz(s2, false) : "-?-";
|
||||||
rsize = slprintf(bufp, size, "%s %s %d(%s)",
|
rsize = slprintf(bufp, size, "%s %s %d(%s)",
|
||||||
komma++ ? "," : (const char *)header, loc_army, army_index(s2),
|
komma++ ? "," : (const char *)header, loc_army, army_index(s2),
|
||||||
|
|
|
@ -84,7 +84,7 @@ static char g_bigbuf[BUFFERSIZE];
|
||||||
bool opt_cr_absolute_coords = false;
|
bool opt_cr_absolute_coords = false;
|
||||||
|
|
||||||
/* globals */
|
/* globals */
|
||||||
#define C_REPORT_VERSION 67
|
#define C_REPORT_VERSION 68
|
||||||
|
|
||||||
struct locale *crtag_locale(void) {
|
struct locale *crtag_locale(void) {
|
||||||
static struct locale * lang;
|
static struct locale * lang;
|
||||||
|
@ -495,38 +495,6 @@ static int cr_curse(variant var, char *buffer, const void *userdata)
|
||||||
|
|
||||||
/*static int msgno; */
|
/*static int msgno; */
|
||||||
|
|
||||||
#define MTMAXHASH 1021
|
|
||||||
|
|
||||||
static struct known_mtype {
|
|
||||||
const struct message_type *mtype;
|
|
||||||
struct known_mtype *nexthash;
|
|
||||||
} *mtypehash[MTMAXHASH];
|
|
||||||
|
|
||||||
static void report_crtypes(FILE * F, const struct locale *lang)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = 0; i != MTMAXHASH; ++i) {
|
|
||||||
struct known_mtype *kmt;
|
|
||||||
for (kmt = mtypehash[i]; kmt; kmt = kmt->nexthash) {
|
|
||||||
char buffer[DISPLAYSIZE];
|
|
||||||
int hash = (int)kmt->mtype->key;
|
|
||||||
assert(hash > 0);
|
|
||||||
fprintf(F, "MESSAGETYPE %d\n", hash);
|
|
||||||
fputc('\"', F);
|
|
||||||
fputs(crescape(nrt_string(kmt->mtype, lang), buffer, sizeof(buffer)), F);
|
|
||||||
fputs("\";text\n", F);
|
|
||||||
if (kmt->mtype->section) {
|
|
||||||
fprintf(F, "\"%s\";section\n", kmt->mtype->section);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (mtypehash[i]) {
|
|
||||||
kmt = mtypehash[i];
|
|
||||||
mtypehash[i] = mtypehash[i]->nexthash;
|
|
||||||
free(kmt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int message_id(const struct message *msg)
|
static int message_id(const struct message *msg)
|
||||||
{
|
{
|
||||||
variant var;
|
variant var;
|
||||||
|
@ -594,19 +562,6 @@ static void render_messages(FILE * F, faction * f, message_list * msgs)
|
||||||
else {
|
else {
|
||||||
log_error("could not render cr-message %p: %s\n", m->msg, m->msg->type->name);
|
log_error("could not render cr-message %p: %s\n", m->msg, m->msg->type->name);
|
||||||
}
|
}
|
||||||
if (printed) {
|
|
||||||
unsigned int ihash = hash % MTMAXHASH;
|
|
||||||
struct known_mtype *kmt = mtypehash[ihash];
|
|
||||||
while (kmt && kmt->mtype != mtype)
|
|
||||||
kmt = kmt->nexthash;
|
|
||||||
if (kmt == NULL) {
|
|
||||||
kmt = (struct known_mtype *)malloc(sizeof(struct known_mtype));
|
|
||||||
if (!kmt) abort();
|
|
||||||
kmt->nexthash = mtypehash[ihash];
|
|
||||||
kmt->mtype = mtype;
|
|
||||||
mtypehash[ihash] = kmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m = m->next;
|
m = m->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1714,7 +1669,6 @@ report_computer(const char *filename, report_context * ctx, const char *bom)
|
||||||
cr_output_region(F, ctx, r);
|
cr_output_region(F, ctx, r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
report_crtypes(F, f->locale);
|
|
||||||
if (f->locale != crtag_locale()) {
|
if (f->locale != crtag_locale()) {
|
||||||
report_translations(F);
|
report_translations(F);
|
||||||
}
|
}
|
||||||
|
|
16
src/laws.c
16
src/laws.c
|
@ -591,11 +591,11 @@ growing_trees_e3(region * r, const int current_season,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static short cap_short(int i) {
|
static int cap_int(int i, int imin, int imax) {
|
||||||
if (i > SHRT_MIN) {
|
if (i > imin) {
|
||||||
return ((i < SHRT_MAX) ? (short)i : SHRT_MAX);
|
return ((i < imax) ? i : imax);
|
||||||
}
|
}
|
||||||
return SHRT_MIN;
|
return imin;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -681,8 +681,12 @@ growing_trees(region * r, const season_t current_season, const season_t last_wee
|
||||||
a = a_find(r->attribs, &at_germs);
|
a = a_find(r->attribs, &at_germs);
|
||||||
if (!a) {
|
if (!a) {
|
||||||
a = a_add(&r->attribs, a_new(&at_germs));
|
a = a_add(&r->attribs, a_new(&at_germs));
|
||||||
a->data.sa[0] = cap_short(rtrees(r, 0));
|
a->data.sa[0] = (short)cap_int(rtrees(r, 0), 0, SHRT_MAX);
|
||||||
a->data.sa[1] = cap_short(rtrees(r, 1));
|
a->data.sa[1] = (short)cap_int(rtrees(r, 1), 0, SHRT_MAX);
|
||||||
|
}
|
||||||
|
else if (a->data.sa[0] < 0 || a->data.sa[1] << 0) {
|
||||||
|
a->data.sa[0] = (short)cap_int(a->data.sa[0], 0, SHRT_MAX);
|
||||||
|
a->data.sa[1] = (short)cap_int(a->data.sa[1], 0, SHRT_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Baumwachstum */
|
/* Baumwachstum */
|
||||||
|
|
Loading…
Reference in New Issue