From b1aa004216dd4c43196e5baae0e07c7959462ec0 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 9 Aug 2016 21:50:27 +0200 Subject: [PATCH] Continue to advance line number if encountering blank lines. Refs #319 * Also advance for any invalid/unparseable #line statements --- .../driver/shaders/dxbc/dxbc_disassemble.cpp | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/shaders/dxbc/dxbc_disassemble.cpp b/renderdoc/driver/shaders/dxbc/dxbc_disassemble.cpp index 8129f07d3..c2a0abdb5 100644 --- a/renderdoc/driver/shaders/dxbc/dxbc_disassemble.cpp +++ b/renderdoc/driver/shaders/dxbc/dxbc_disassemble.cpp @@ -421,7 +421,10 @@ void DXBCFile::MakeDisassemblyString() for(size_t srcLine = 0; srcLine < srclines.size(); srcLine++) { if(srclines[srcLine].empty()) + { + dstLine++; continue; + } char *c = &srclines[srcLine][0]; char *end = c + srclines[srcLine].size(); @@ -430,7 +433,11 @@ void DXBCFile::MakeDisassemblyString() c++; if(c + 5 > end) + { + // blank line, just advance line counter + dstLine++; continue; + } if(strncmp(c, "#line", 5)) { @@ -454,17 +461,28 @@ void DXBCFile::MakeDisassemblyString() c += 5; if(c >= end) + { + // invalid #line, just advance line counter + dstLine++; continue; + } while(*c == '\t' || *c == ' ') c++; if(c >= end) + { + // invalid #line, just advance line counter + dstLine++; continue; + } - // invalid #line, no line number. Skip/ignore + // invalid #line, no line number. Skip/ignore and just advance line counter if(*c < '0' || *c > '9') + { + dstLine++; continue; + } size_t newLineNum = 0; while(*c >= '0' && *c <= '9')