rewrite form_successful_controls_dom as form_dom_to_data

Trying to reason about error propagation and resource leakage within
 the form submission code was impossible because of the
 form_successful_controls_dom function.

This function was over six hundred lines long, had twenty six top
 level local variables and six levels of indent in places.

This commit splits it out into thirteen shorter and more obvious
 functions. The resulting operation is identical except errors are
 properly propagated (all failures were reported as out of memory)
 and resource management can be reasoned about.

The compiler appears to inline the entirety of the code from
 form_submit() down excepting a handful of leaf functions. This
 results in similar code output size as previous implementation.

The new implementation has a greater number of variables passed to sub
 functions than desirable because multiple character sets are required
 to encode names and values in the multipart data list. However as
 noted the compiler effectively inlines all these functions so this
 does not actually become a major problem.
This commit is contained in:
Vincent Sanders 2018-09-29 16:31:09 +01:00
parent 5b849b1e22
commit 7a61c95724
1 changed files with 892 additions and 565 deletions

File diff suppressed because it is too large Load Diff