This is patch 3, which repurposes the local_storage union so that it can also save the reason that an attempted zone load failed. Doing so has several implications: * local_storage changes from a union to a struct. (This means tzcode will use a bit more memory, although not permanently so.) * The allocation of local_storage is no longer performed in tzload, but rather in its callers: tzparse, gmtload, and zoneinit. This means that tzload doesn't do anything any more, so I have merged it with tzloadbody. * The allocation of local_storage in tzload used to be either on the heap or the stack, depending on whether ALL_STATE was defined. For simplicity, I've removed the heap allocation option, such that now (in all three of tzparse, gmtload, and zoneinit), local_storage is always allocated on the stack. I don't understand why it was ever important to allocate it on the heap (even in the ALL_STATE case), since it was always freed immediately afterwards. But I don't fully understand what ALL_STATE is for, so I might have missed something. This patch is with respect to 2017c, plus Patches 1 and 2. Steve Summit scs@eskimo.com