]> git.pond.sub.org Git - empserver/commitdiff
Fix edit l, s, u, p not to wipe out concurrent updates hvy-metal-2.1a
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 10 May 2008 06:40:48 +0000 (08:40 +0200)
committerMarkus Armbruster <armbru@pike.pond.sub.org>
Sun, 18 May 2008 08:13:45 +0000 (10:13 +0200)
Make edit() bail out if the edited object changed while edit() slept
for input.
(cherry picked from commit a1f4dc95920e579432dfbd0e7664558f8c3ca1fc)

src/lib/commands/edit.c

index 0b3108c0ab54c65f09c3eeed0b32b9f7a57bff80..a55a785674abd7a933650b2fe1016d725607f903 100644 (file)
@@ -191,12 +191,16 @@ edit(void)
                return err;
            break;
        case 'l':
+           if (!check_sect_ok(&sect))
+               return RET_FAIL;
            if ((err = doland(thing, arg, ptr, &sect)) != RET_OK)
                return err;
            if (!putsect(&sect))
                return RET_FAIL;
            break;
        case 's':
+           if (!check_ship_ok(&ship))
+               return RET_FAIL;
            if ((err = doship(thing, arg, ptr, &ship)) != RET_OK)
                return err;
            if (!ef_ensure_space(EF_SHIP, ship.shp_uid, 50))
@@ -205,6 +209,8 @@ edit(void)
                return RET_FAIL;
            break;
        case 'u':
+           if (!check_land_ok(&land))
+               return RET_FAIL;
            if ((err = dounit(thing, arg, ptr, &land)) != RET_OK)
                return err;
            if (!ef_ensure_space(EF_LAND, land.lnd_uid, 50))
@@ -213,6 +219,8 @@ edit(void)
                return RET_FAIL;
            break;
        case 'p':
+           if (!check_plane_ok(&plane))
+               return RET_FAIL;
            if ((err = doplane(thing, arg, ptr, &plane)) != RET_OK)
                return err;
            if (!ef_ensure_space(EF_PLANE, plane.pln_uid, 50))