View Issue Details

IDProjectCategoryView StatusLast Update
0024465Runner[All Projects] FunctionsPublic2018-01-25 11:23
ReporterYellowAfterlifeAssigned ToFritz 
PriorityLowSeverityC - GeneralReproducibility100%
Status ResolvedResolutionFixed 
PlatformWindowsOSWindows 8OS Version8.1
Product Version 
Target VersionFixed in Version 
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.
1.4 Found In7.7.1338
2.x Runtime Found In
2.x Runtime Verified In

Relationships

duplicate of 0017677 ClosedRussell Kay HTML5: HTML5 module 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.