]> granicus.if.org Git - graphviz/commit
gvpr toLower: rewrite to use a single buffer
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 7 Aug 2022 16:24:43 +0000 (09:24 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 13 Aug 2022 16:18:53 +0000 (09:18 -0700)
commitdea0343e21032f0f29ec42cbc0c099ff00391d6f
tree82a1d41ed2a8e43f34fee416848535359cb86e03
parent2a08635d3be19b23571d738a76a58d1fbca219fa
gvpr toLower: rewrite to use a single buffer

`toLower` worked by using the GVPR state’s temporary buffer, `tmp`, to
incrementally construct a lowercase copy of the input. This works but is
suboptimal. When printing to the temporary buffer, it has no knowledge of what
we are up to and needs to make heuristic-based decisions on how to allocate
memory. But we know the exact size of the result string already. This commit
takes advantage of this knowledge and allocates the destination memory upfront
and then simply writes directly into it. By doing this, we reduce heap pressure
and eliminate an intermediate copying operation.

This commit also renames the `s` parameter to something more descriptive.

Gitlab: #1873
lib/gvpr/actions.c
lib/gvpr/actions.h
lib/gvpr/compile.c