From b321918cd1881aca4f54c88ad5947c5f64fa2f82 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Wed, 31 Aug 2016 20:38:20 +0200 Subject: [PATCH] check and fix destroy_cmd syntax error handling --- src/kernel/build.c | 2 +- src/kernel/build.test.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/kernel/build.c b/src/kernel/build.c index a6e8ff3dc..6bea3e6b4 100644 --- a/src/kernel/build.c +++ b/src/kernel/build.c @@ -175,7 +175,7 @@ int destroy_cmd(unit * u, struct order *ord) } } - if (isparam(s, u->faction->locale, P_ROAD)) { + if (s && isparam(s, u->faction->locale, P_ROAD)) { destroy_road(u, n, ord); return 0; } diff --git a/src/kernel/build.test.c b/src/kernel/build.test.c index b59a09d73..65e651010 100644 --- a/src/kernel/build.test.c +++ b/src/kernel/build.test.c @@ -382,6 +382,18 @@ static void test_build_destroy_road_limit(CuTest *tc) test_cleanup(); } +static void test_build_destroy_cmd(CuTest *tc) { + unit *u; + faction *f; + + test_setup(); + u = test_create_unit(f = test_create_faction(0), test_create_region(0, 0, 0)); + u->thisorder = create_order(K_DESTROY, f->locale, NULL); + CuAssertIntEquals(tc, 138, destroy_cmd(u, u->thisorder)); + CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "error138")); + test_cleanup(); +} + CuSuite *get_build_suite(void) { CuSuite *suite = CuSuiteNew(); @@ -396,6 +408,7 @@ CuSuite *get_build_suite(void) SUITE_ADD_TEST(suite, test_build_building_success); SUITE_ADD_TEST(suite, test_build_building_with_golem); SUITE_ADD_TEST(suite, test_build_building_no_materials); + SUITE_ADD_TEST(suite, test_build_destroy_cmd); SUITE_ADD_TEST(suite, test_build_destroy_road); SUITE_ADD_TEST(suite, test_build_destroy_road_limit); SUITE_ADD_TEST(suite, test_build_destroy_road_guard);