mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
- Fixed: The TEXTURES parser could copy beyond the end of a string when parsing
a 'define' definition. SVN r1263 (trunk)
This commit is contained in:
parent
738e8ca7ad
commit
bca1fc5068
2 changed files with 35 additions and 26 deletions
|
@ -14,6 +14,10 @@ October 13, 2008
|
||||||
player's inventory when death caused the morph to revert.
|
player's inventory when death caused the morph to revert.
|
||||||
- Updated fmod_wrap.h for FMOD Ex 4.18.
|
- Updated fmod_wrap.h for FMOD Ex 4.18.
|
||||||
|
|
||||||
|
October 10, 2008 (Changes by Graf Zahl)
|
||||||
|
- Fixed: The TEXTURES parser could copy beyond the end of a string when parsing
|
||||||
|
a 'define' definition.
|
||||||
|
|
||||||
October 7, 2008 (Changes by Graf Zahl)
|
October 7, 2008 (Changes by Graf Zahl)
|
||||||
- Fixed: Cheats in demos must not access the weapon slots.
|
- Fixed: Cheats in demos must not access the weapon slots.
|
||||||
- Fixed: S_ChannelEnded didn't check for a NULL SfxInfo.
|
- Fixed: S_ChannelEnded didn't check for a NULL SfxInfo.
|
||||||
|
|
|
@ -535,38 +535,43 @@ void FTextureManager::LoadTextureDefs(int wadnum, const char *lumpname)
|
||||||
else if (sc.Compare("define")) // define a new "fake" texture
|
else if (sc.Compare("define")) // define a new "fake" texture
|
||||||
{
|
{
|
||||||
sc.GetString();
|
sc.GetString();
|
||||||
memcpy(src, ExtractFileBase(sc.String, false), 8);
|
|
||||||
|
FString base = ExtractFileBase(sc.String, false);
|
||||||
int lumpnum = Wads.CheckNumForFullName(sc.String, true, ns_patches);
|
if (!base.IsEmpty())
|
||||||
if (lumpnum == -1) lumpnum = Wads.CheckNumForFullName(sc.String, true, ns_graphics);
|
|
||||||
|
|
||||||
sc.GetString();
|
|
||||||
is32bit = !!sc.Compare("force32bit");
|
|
||||||
if (!is32bit) sc.UnGet();
|
|
||||||
|
|
||||||
sc.GetNumber();
|
|
||||||
width = sc.Number;
|
|
||||||
sc.GetNumber();
|
|
||||||
height = sc.Number;
|
|
||||||
|
|
||||||
if (lumpnum>=0)
|
|
||||||
{
|
{
|
||||||
FTexture *newtex = FTexture::CreateTexture(lumpnum, FTexture::TEX_Override);
|
strncpy(src, base, 8);
|
||||||
|
|
||||||
if (newtex != NULL)
|
int lumpnum = Wads.CheckNumForFullName(sc.String, true, ns_patches);
|
||||||
|
if (lumpnum == -1) lumpnum = Wads.CheckNumForFullName(sc.String, true, ns_graphics);
|
||||||
|
|
||||||
|
sc.GetString();
|
||||||
|
is32bit = !!sc.Compare("force32bit");
|
||||||
|
if (!is32bit) sc.UnGet();
|
||||||
|
|
||||||
|
sc.GetNumber();
|
||||||
|
width = sc.Number;
|
||||||
|
sc.GetNumber();
|
||||||
|
height = sc.Number;
|
||||||
|
|
||||||
|
if (lumpnum>=0)
|
||||||
{
|
{
|
||||||
// Replace the entire texture and adjust the scaling and offset factors.
|
FTexture *newtex = FTexture::CreateTexture(lumpnum, FTexture::TEX_Override);
|
||||||
newtex->bWorldPanning = true;
|
|
||||||
newtex->SetScaledSize(width, height);
|
|
||||||
memcpy(newtex->Name, src, sizeof(newtex->Name));
|
|
||||||
|
|
||||||
FTextureID oldtex = TexMan.CheckForTexture(src, FTexture::TEX_MiscPatch);
|
if (newtex != NULL)
|
||||||
if (oldtex.isValid())
|
|
||||||
{
|
{
|
||||||
ReplaceTexture(oldtex, newtex, true);
|
// Replace the entire texture and adjust the scaling and offset factors.
|
||||||
newtex->UseType = FTexture::TEX_Override;
|
newtex->bWorldPanning = true;
|
||||||
|
newtex->SetScaledSize(width, height);
|
||||||
|
memcpy(newtex->Name, src, sizeof(newtex->Name));
|
||||||
|
|
||||||
|
FTextureID oldtex = TexMan.CheckForTexture(src, FTexture::TEX_MiscPatch);
|
||||||
|
if (oldtex.isValid())
|
||||||
|
{
|
||||||
|
ReplaceTexture(oldtex, newtex, true);
|
||||||
|
newtex->UseType = FTexture::TEX_Override;
|
||||||
|
}
|
||||||
|
else AddTexture(newtex);
|
||||||
}
|
}
|
||||||
else AddTexture(newtex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//else Printf("Unable to define hires texture '%s'\n", tex->Name);
|
//else Printf("Unable to define hires texture '%s'\n", tex->Name);
|
||||||
|
|
Loading…
Reference in a new issue