summaryrefslogtreecommitdiff
path: root/gflib
diff options
context:
space:
mode:
authorSierraffinity <sierra@domoreaweso.me>2020-04-25 18:25:55 -0700
committerSierraffinity <sierra@domoreaweso.me>2020-04-25 18:25:55 -0700
commit072a98ca9aea8bfea7edc65f0a4a230974362b96 (patch)
tree2cfc41eaec31cee2daec6fd783fdeaefffdeb5ce /gflib
parentb2d8c6793d80709525d1061c3df6f8f54ee130e1 (diff)
Document undefined sprite template behavior
Diffstat (limited to 'gflib')
-rw-r--r--gflib/sprite.c2
-rw-r--r--gflib/sprite.h4
2 files changed, 6 insertions, 0 deletions
diff --git a/gflib/sprite.c b/gflib/sprite.c
index 2e96acf2c..c7e3d09a3 100644
--- a/gflib/sprite.c
+++ b/gflib/sprite.c
@@ -878,12 +878,14 @@ void ResetAllSprites(void)
ResetSprite(&gSprites[i]);
}
+// UB: template pointer may point to freed temporary storage
void FreeSpriteTiles(struct Sprite *sprite)
{
if (sprite->template->tileTag != 0xFFFF)
FreeSpriteTilesByTag(sprite->template->tileTag);
}
+// UB: template pointer may point to freed temporary storage
void FreeSpritePalette(struct Sprite *sprite)
{
FreeSpritePaletteByTag(sprite->template->paletteTag);
diff --git a/gflib/sprite.h b/gflib/sprite.h
index 9753837fd..c9ba9585d 100644
--- a/gflib/sprite.h
+++ b/gflib/sprite.h
@@ -182,6 +182,10 @@ struct SpriteTemplate
SpriteCallback callback;
};
+// UB: template pointer is often used to point to temporary storage,
+// then later dereferenced after being freed. Usually this won't
+// be visible in-game, but this is (part of) what causes the item
+// icon palette to flicker when changing items in the bag.
struct Sprite
{
/*0x00*/ struct OamData oam;