std.json segmentation fault

Andrea Fontana nospam at example.com
Wed Feb 6 04:09:46 PST 2013


Yes it works in that way. I had to change it in a lot of source 
files.
It worked fine for months as online webservice used by thousands 
users and never crashed :)

With last changes to code (a db connection preference - not 
relevant to std.json) it starts failing every time.



On Wednesday, 6 February 2013 at 09:41:28 UTC, Stephan wrote:
> On Monday, 4 February 2013 at 10:04:10 UTC, Andrea Fontana 
> wrote:
>> This code was working some months ago:
>>
>> import std.json;
>> JSONValue total;
>> total.type = JSON_TYPE.OBJECT;
>> total["results"].type = JSON_TYPE.OBJECT;
>>
>>
>> Now, last line gives me a segmentation fault. What's wrong 
>> with this code?
>
> Here is a full test case. I don't want to submit it to Bugzilla 
> yet, since I don't know whether it's intended behaviour or a 
> bug. I have a slight feeling that this is NOT a bug. Somehow, 
> in the first case a reference to an invalid struct is returned 
> by json["hello"] and attempted to be overridden by a new 
> JSONValue. In the second case, no reference is generated, 
> instead a simple struct copy (a blit) is invoked, which works. 
> Can someone explain this more correctly?
>
> This program crashes (tested on dmd 2.061)
> import std.json;
> void main() {
>   JSONValue json;
>   json.type = JSON_TYPE.OBJECT;
>   json["hello"] = JSONValue();
> }
>
> This program works fine:
> import std.json;
> void main() {
>   JSONValue json;
>   json.type = JSON_TYPE.OBJECT;
>   json.object["hello"] = JSONValue();
> }



More information about the Digitalmars-d mailing list