From b14e13536adebb761d2585700fd3202ff8a4870c Mon Sep 17 00:00:00 2001 From: danij Date: Sat, 16 Jun 2012 06:48:49 +0100 Subject: [PATCH] DED Parser|Fixed: Don't log an unknown flag warning if flag name is whitespace --- doomsday/engine/portable/src/def_main.c | 18 +++++++++++++++--- doomsday/engine/portable/src/def_read.c | 20 +++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/doomsday/engine/portable/src/def_main.c b/doomsday/engine/portable/src/def_main.c index b66ba2770f..90c3d55d08 100644 --- a/doomsday/engine/portable/src/def_main.c +++ b/doomsday/engine/portable/src/def_main.c @@ -590,11 +590,20 @@ ded_ptcgen_t* Def_GetDamageGenerator(int mobjType) int Def_GetFlagValue(const char* flag) { - int i; + int i; + + if(!flag || !flag[0]) + { + DEBUG_Message(("Attempted Def_GetFlagValue with %s flag argument.\n", + flag? "zero-length" : "")); + return 0; + } for(i = defs.count.flags.num - 1; i >= 0; i--) + { if(!stricmp(defs.flags[i].id, flag)) return defs.flags[i].value; + } Con_Message("Warning: Def_GetFlagValue: Undefined flag '%s'.\n", flag); return 0; @@ -1554,7 +1563,7 @@ static int Friendly(int num) */ void Def_CopyLineType(linetype_t* l, ded_linetype_t* def) { - int i, k, a, temp; + int i, k, a, temp; l->id = def->id; l->flags = def->flags[0]; @@ -1629,8 +1638,11 @@ void Def_CopyLineType(linetype_t* l, ded_linetype_t* def) temp = Def_EvalFlags(def->iparmStr[k]); if(temp) l->iparm[k] = temp; - } else + } + else + { l->iparm[k] = Friendly(Def_GetMusicNum(def->iparmStr[k])); + } } else { diff --git a/doomsday/engine/portable/src/def_read.c b/doomsday/engine/portable/src/def_read.c index a0fe52536b..ead6442702 100644 --- a/doomsday/engine/portable/src/def_read.c +++ b/doomsday/engine/portable/src/def_read.c @@ -504,7 +504,7 @@ static int ReadFloat(float* dest) static int ReadFlags(int* dest, const char* prefix) { - char flag[1024]; + char flag[1024]; // By default, no flags are set. *dest = 0; @@ -517,7 +517,16 @@ static int ReadFlags(int* dest, const char* prefix) if(!ReadString(flag, sizeof(flag))) return false; - *dest = Def_EvalFlags(flag); + M_Strip(flag, sizeof(flag)); + + if(strlen(flag)) + { + *dest = Def_EvalFlags(flag); + } + else + { + *dest = 0; + } return true; } @@ -535,7 +544,12 @@ static int ReadFlags(int* dest, const char* prefix) strcpy(flag, token); } - *dest |= Def_EvalFlags(flag); + M_Strip(flag, sizeof(flag)); + + if(strlen(flag)) + { + *dest |= Def_EvalFlags(flag); + } if(!ReadToken()) break;