I believe you want to unconditionally return inside of this block, since read_default() fills in everything and so does init_default().
(I see this function has changed a good bit at your HEAD, but it had some other infrastructure requirements I haven't gotten to yet so I'm going to have to comment as I move through the diffs.)