- added core lump checks for ZScript.

- load internal shaders only from file 0. This does not contain aborts, like most of the other checks,but it will now refuse to load any core shader file from anything but gzdoom.pk3.
This commit is contained in:
Christoph Oelckers 2017-01-23 01:56:15 +01:00
parent 517733a04e
commit 5a4a5a17db
3 changed files with 13 additions and 4 deletions

View File

@ -60,15 +60,15 @@ bool FShader::Load(const char * name, const char * vert_prog_lump, const char *
static char buffer[10000]; static char buffer[10000];
FString error; FString error;
int i_lump = Wads.CheckNumForFullName("shaders/glsl/shaderdefs.i"); int i_lump = Wads.CheckNumForFullName("shaders/glsl/shaderdefs.i", 0);
if (i_lump == -1) I_Error("Unable to load 'shaders/glsl/shaderdefs.i'"); if (i_lump == -1) I_Error("Unable to load 'shaders/glsl/shaderdefs.i'");
FMemLump i_data = Wads.ReadLump(i_lump); FMemLump i_data = Wads.ReadLump(i_lump);
int vp_lump = Wads.CheckNumForFullName(vert_prog_lump); int vp_lump = Wads.CheckNumForFullName(vert_prog_lump, 0);
if (vp_lump == -1) I_Error("Unable to load '%s'", vert_prog_lump); if (vp_lump == -1) I_Error("Unable to load '%s'", vert_prog_lump);
FMemLump vp_data = Wads.ReadLump(vp_lump); FMemLump vp_data = Wads.ReadLump(vp_lump);
int fp_lump = Wads.CheckNumForFullName(frag_prog_lump); int fp_lump = Wads.CheckNumForFullName(frag_prog_lump, 0);
if (fp_lump == -1) I_Error("Unable to load '%s'", frag_prog_lump); if (fp_lump == -1) I_Error("Unable to load '%s'", frag_prog_lump);
FMemLump fp_data = Wads.ReadLump(fp_lump); FMemLump fp_data = Wads.ReadLump(fp_lump);

View File

@ -89,7 +89,7 @@ void FShaderProgram::CreateShader(ShaderType type)
void FShaderProgram::Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion) void FShaderProgram::Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion)
{ {
int lump = Wads.CheckNumForFullName(lumpName); int lump = Wads.CheckNumForFullName(lumpName, 0);
if (lump == -1) I_FatalError("Unable to load '%s'", lumpName); if (lump == -1) I_FatalError("Unable to load '%s'", lumpName);
FString code = Wads.ReadLump(lump).GetString().GetChars(); FString code = Wads.ReadLump(lump).GetString().GetChars();
Compile(type, lumpName, code, defines, maxGlslVersion); Compile(type, lumpName, code, defines, maxGlslVersion);

View File

@ -316,6 +316,8 @@ static void DoParse(int lumpnum)
FScanner sc; FScanner sc;
void *parser; void *parser;
ZCCToken value; ZCCToken value;
auto baselump = lumpnum;
auto fileno = Wads.GetLumpFile(lumpnum);
parser = ZCCParseAlloc(malloc); parser = ZCCParseAlloc(malloc);
ZCCParseState state; ZCCParseState state;
@ -344,6 +346,13 @@ static void DoParse(int lumpnum)
} }
else else
{ {
auto fileno2 = Wads.GetLumpFile(lumpnum);
if (fileno == 0 && fileno2 != 0)
{
I_FatalError("File %s is overriding core lump %s.",
Wads.GetWadFullName(Wads.GetLumpFile(baselump)), Includes[i].GetChars());
}
ParseSingleFile(nullptr, lumpnum, parser, state); ParseSingleFile(nullptr, lumpnum, parser, state);
} }
} }