View Issue Details

IDProjectCategoryView StatusLast Update
0024465RunnerHTML5Public2018-08-13 14:12
ReporterYellowAfterlifeAssigned ToYellowAfterlife 
PriorityLowSeverityC - GeneralReproducibility100%
Status ClosedResolutionDuplicate 
PlatformHTML5OSWindows 8OS Version8.1
Product VersionPre-2.1.3 
Target Version2.1.4Fixed in Version2.1.4 
Summary0024465: Functions: ini_write_string() does not escape double quotes - breaks JSON.
DescriptionDoing ini_write_string("a", "b", '1"2')
will write
[a]
b="1"2"
and ini_read_string will only read "1".
This means that you cannot store JSON in INI files as-is because it'll only read the data until the first keypair.
Example attached.
Additional InformationDoing string_replace_all(json_encode(map), '"', "'") is a viable workaround.
TagsNo tags attached.
1.4 Found In7.7.1338
2.x Runtime Found In
2.x Runtime Verified In

Relationships

duplicate of 0017677 ClosedYellowAfterlife HTML5: Cannot read INI entries stored from ds_grid_write() 

Activities

YellowAfterlife

2016-11-01 23:43

Developer  

a_bug.gmz (119,438 bytes)

GameGeisha

2016-11-02 14:16

Updater   ~0049996

Double quotes are not the only things that need better handling. Square brackets, spaces, equal signs, comments (# and ;) all break INI functions. For years I've seen people advocating the use of ds_*_write() and ds_*_read() functions with INI files, not knowing that their tendency to produce JSON output on HTML5 would kill their save data.
 
This is the reason why I am a JSON purist on GML who never mixes it with INI. You can count on the inadequacies of INI functions to break it.