SteamKit icon indicating copy to clipboard operation
SteamKit copied to clipboard

KeyValue: Handle (ignore) conditionals

Open yaakov-h opened this issue 6 years ago • 5 comments

As pointed out by @xPaw, we crash when reading tf_english.txt.

I narrowed this down to our handling of conditionals - it's completely broken. We count the conditional as a key, then read the next key as a value, etc. until our keys and values are swapped.

Therefore, an empty value after a conditional will trigger the exception that fails a parse on an empty key.

I don't think this is necessarily the best way to handle them, but at least it doesn't crash :smile:

Do not merge (yet), I'm only posting this for discussion. How do we want to handle conditionals, and is this the best way?

I think I can see some implementation flaws in this code (i.e. the green part of the diff) but it's getting late and I need to go to bed so I'm stopping for tonight. I know it's not perfect.

Previous PR and discussion at #232.

yaakov-h avatar May 23 '19 09:05 yaakov-h

Worth pointing out that @yaakov-h wrote a different keyvalue parser and it has good test coverage: https://github.com/SteamDatabase/ValveKeyValue

xPaw avatar May 23 '19 09:05 xPaw

I only did that after stumbling across this and needing a better solution. 😄

yaakov-h avatar May 23 '19 09:05 yaakov-h