diff options
| author | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-06-29 13:24:52 +0000 |
|---|---|---|
| committer | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-06-29 13:24:52 +0000 |
| commit | 317866022797bd364b575d02d9b94dfd73a13b9b (patch) | |
| tree | 54b381de50109a8bcbd43538af00e0c18947bc59 /src/base/space.c | |
| parent | 2d776fcd61be168e1ff0ff2e4a5e71835e7cea19 (diff) | |
- oprava chyby, objekt ulozeny v space_t sa mohol dostat do priestoru, ktory nepokryva spave_t, cim sa dostal do
nealokovanej pamate.
git-svn-id: http://opensvn.csie.org/tuxanci_ng@78 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/base/space.c')
| -rw-r--r-- | src/base/space.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/base/space.c b/src/base/space.c index 0d3060a..aeae784 100644 --- a/src/base/space.c +++ b/src/base/space.c @@ -289,6 +289,11 @@ void addObjectToSpace(space_t *p, void *item) { for( j = segX ; j < segX + segW ; j++ ) { + if( j < 0 || j >= p->w || i < 0 || i >= p->h ) + { + continue; + } + addList(p->area[j][i], item); } } @@ -318,6 +323,11 @@ void getObjectFromSpace(space_t *p, int x, int y, int w, int h, list_t *list) for( k = 0 ; k < p->area[j][i]->count ; k++ ) { + if( j < 0 || j >= p->w || i < 0 || i >= p->h ) + { + continue; + } + this = p->area[j][i]->list[k]; p->getStatus(this, &id, &this_x, &this_y, &this_w, &this_h); @@ -410,6 +420,11 @@ int isConflictWithObjectFromSpace(space_t *p, int x, int y, int w, int h) for( k = 0 ; k < p->area[j][i]->count ; k++ ) { + if( j < 0 || j >= p->w || i < 0 || i >= p->h ) + { + continue; + } + this = p->area[j][i]->list[k]; p->getStatus(this, &id, &this_x, &this_y, &this_w, &this_h); @@ -440,6 +455,11 @@ int isConflictWithObjectFromSpaceBut(space_t *p, int x, int y, int w, int h, voi for( k = 0 ; k < p->area[j][i]->count ; k++ ) { + if( j < 0 || j >= p->w || i < 0 || i >= p->h ) + { + continue; + } + this = p->area[j][i]->list[k]; if( this == but ) @@ -474,6 +494,11 @@ void delObjectFromSpace(space_t *p, void *item) { for( j = segX ; j < segX + segW ; j++ ) { + if( j < 0 || j >= p->w || i < 0 || i >= p->h ) + { + continue; + } + index = searchListItem(p->area[j][i], item); assert( index != -1 ); delList(p->area[j][i], index); |