|author||Vincent Sanders <firstname.lastname@example.org>||2018-09-29 16:31:09 +0100|
|committer||Vincent Sanders <email@example.com>||2018-09-29 16:59:34 +0100|
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.
Diffstat (limited to 'Makefile')
0 files changed, 0 insertions, 0 deletions