Ticket #8063: validateResource.diff

File validateResource.diff, 3.4 KB (added by SF/jamieson630, 22 years ago)

Patch against a September 24 CVS snapshot

  • scummvm/scumm/resource.cpp

    RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
    retrieving revision 1.11
    diff -u -r1.11 resource.cpp
     
    11111111{
    11121112        byte *ptr;
    11131113
    1114         CHECK_HEAP validateResource("getResourceAddress", type, idx);
     1114        CHECK_HEAP if (!validateResource("getResourceAddress", type, idx))
     1115                return NULL;
     1116
    11151117        if (!res.address[type]) {
    11161118                debug(9, "getResourceAddress(%s,%d), res.address[type] == NULL", resTypeFromId(type), idx);
    11171119                return NULL;
     
    11741176
    11751177        CHECK_HEAP debug(9, "createResource(%s,%d,%d)", resTypeFromId(type), idx, size);
    11761178
    1177         validateResource("allocating", type, idx);
     1179        if (!validateResource("allocating", type, idx))
     1180                return NULL;
    11781181        nukeResource(type, idx);
    11791182
    11801183        expireResources(size);
     
    11921195        return ptr + sizeof(MemBlkHeader);      /* skip header */
    11931196}
    11941197
    1195 void Scumm::validateResource(const char *str, int type, int idx)
     1198bool Scumm::validateResource(const char *str, int type, int idx)
    11961199{
    11971200        if (type < rtFirst || type > rtLast || (uint) idx >= (uint) res.num[type]) {
    11981201                warning("%s Illegal Glob type %s (%d) num %d", str, resTypeFromId(type), type, idx);
     1202                return false;
    11991203        }
     1204        return true;
    12001205}
    12011206
    12021207void Scumm::nukeResource(int type, int idx)
     
    13701375
    13711376void Scumm::lock(int type, int i)
    13721377{
    1373         validateResource("Locking", type, i);
     1378        if (!validateResource("Locking", type, i))
     1379                return;
    13741380        res.flags[type][i] |= RF_LOCK;
    13751381
    13761382//  debug(1, "locking %d,%d", type, i);
     
    13781384
    13791385void Scumm::unlock(int type, int i)
    13801386{
    1381         validateResource("Unlocking", type, i);
     1387        if (!validateResource("Unlocking", type, i))
     1388                return;
    13821389        res.flags[type][i] &= ~RF_LOCK;
    13831390
    13841391//  debug(1, "unlocking %d,%d", type, i);
     
    13861393
    13871394bool Scumm::isResourceInUse(int type, int i)
    13881395{
    1389         validateResource("isResourceInUse", type, i);
     1396        if (!validateResource("isResourceInUse", type, i))
     1397                return false;
    13901398        switch (type) {
    13911399        case rtRoom:
    13921400                return _roomResource == (byte)i;
     
    15031511
    15041512bool Scumm::isResourceLoaded(int type, int idx)
    15051513{
    1506         validateResource("isLoaded", type, idx);
     1514        if (!validateResource("isLoaded", type, idx))
     1515                return false;
    15071516        return res.address[type][idx] != NULL;
    15081517}
    15091518
     
    16741683
    16751684bool Scumm::isGlobInMemory(int type, int idx)
    16761685{
    1677         validateResource("isGlobInMemory", type, idx);
     1686        if (!validateResource("isGlobInMemory", type, idx))
     1687                return false;
    16781688
    16791689        return res.address[type][idx] != NULL;
    16801690}
  • scummvm/scumm/scumm.h

    RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
    retrieving revision 1.28
    diff -u -r1.28 scumm.h
     
    600600        int readSoundResource(int type, int index);
    601601        int readSoundResourceSmallHeader(int type, int index);
    602602        void setResourceCounter(int type, int index, byte flag);
    603         void validateResource(const char *str, int type, int index);
     603        bool validateResource(const char *str, int type, int index);
    604604        void increaseResourceCounter();
    605605        bool isResourceInUse(int type, int i);
    606606        bool isResourceLoaded(int type, int index);