]> granicus.if.org Git - graphviz/log
graphviz
2 years agocmd/smyrna: remove some unnecessary intermediate buffers
Matthew Fernandez [Mon, 21 Mar 2022 04:42:28 +0000 (21:42 -0700)]
cmd/smyrna: remove some unnecessary intermediate buffers

2 years agocmd/smyrna: remove some excess white space
Matthew Fernandez [Mon, 21 Mar 2022 04:42:02 +0000 (21:42 -0700)]
cmd/smyrna: remove some excess white space

2 years agocmd/smyrna: remove some open coded 'NULL'
Matthew Fernandez [Mon, 21 Mar 2022 04:41:08 +0000 (21:41 -0700)]
cmd/smyrna: remove some open coded 'NULL'

2 years agoCI: install libglade on CentOS 7, enabling lib/glcomp
Matthew Fernandez [Mon, 21 Mar 2022 02:18:25 +0000 (19:18 -0700)]
CI: install libglade on CentOS 7, enabling lib/glcomp

A step on the way towards enabling Smyrna in the CMake build.

Gitlab: #1836

2 years agoCMake: enable lib/glcomp
Matthew Fernandez [Sun, 20 Mar 2022 23:37:07 +0000 (16:37 -0700)]
CMake: enable lib/glcomp

Interestingly enabling this revealed that lib/glcomp also depends on Pango,
something unexpressed in either the Autotools or MS Build build systems.

Gitlab: #1836

2 years agolib/glcomp: remove gtkglext CFLAGS tweak
Matthew Fernandez [Mon, 21 Mar 2022 00:07:06 +0000 (17:07 -0700)]
lib/glcomp: remove gtkglext CFLAGS tweak

As far as I can tell, glcomp does not use gtkglext. Smyrna, which depends on
glcomp, does. But Smyrna specifies its own linking against gtkglext.

2 years agolib/glcomp: remove unnecessary 'static' from some variables
Matthew Fernandez [Mon, 21 Mar 2022 04:35:20 +0000 (21:35 -0700)]
lib/glcomp: remove unnecessary 'static' from some variables

These are unconditionally overwritten during their respective functions before
they are ever read.

2 years agolib/glcomp: remove unnecessary parens
Matthew Fernandez [Mon, 21 Mar 2022 04:34:55 +0000 (21:34 -0700)]
lib/glcomp: remove unnecessary parens

2 years agolib/glcomp: remove some unnecessary casts
Matthew Fernandez [Mon, 21 Mar 2022 04:34:02 +0000 (21:34 -0700)]
lib/glcomp: remove some unnecessary casts

2 years agolib/glcomp: remove some open coded 'NULL'
Matthew Fernandez [Mon, 21 Mar 2022 04:33:21 +0000 (21:33 -0700)]
lib/glcomp: remove some open coded 'NULL'

2 years agolib/glcomp: remove some duplicate #includes
Matthew Fernandez [Sun, 20 Mar 2022 23:59:01 +0000 (16:59 -0700)]
lib/glcomp: remove some duplicate #includes

2 years agolib/glcomp: remove some trailing white space
Matthew Fernandez [Sun, 20 Mar 2022 23:58:44 +0000 (16:58 -0700)]
lib/glcomp: remove some trailing white space

2 years agolib/topfish: missing CMake dependencies
Matthew Fernandez [Tue, 22 Mar 2022 02:03:51 +0000 (19:03 -0700)]
lib/topfish: missing CMake dependencies

This seems to have been broken since CMake support for lib/topfish was
introduced in 45893ca105777e1c5b97788cd169e400250ffa1f. But it was never noticed
because there is no executable in the CMake build system that links against
topfish yet.

Gitlab: #1836

2 years agolib/topfish: fix CMakeLists.txt indentation
Matthew Fernandez [Tue, 22 Mar 2022 01:13:03 +0000 (18:13 -0700)]
lib/topfish: fix CMakeLists.txt indentation

Unclear why `cmakelang.lint` does not warn about this.

2 years agolib/topfish maxmatch: remove unused 'sum_weights'
Matthew Fernandez [Tue, 22 Mar 2022 01:43:47 +0000 (18:43 -0700)]
lib/topfish maxmatch: remove unused 'sum_weights'

This causes compiler warnings resulting in build failure when enabling this in
the CMake build system.

Gitlab: related to #1836

2 years agoremove unused 'HAVE_GTKGLEXT'
Matthew Fernandez [Sun, 20 Mar 2022 23:18:31 +0000 (16:18 -0700)]
remove unused 'HAVE_GTKGLEXT'

Aside from being unused, it is unclear why the Windows config.h was defining
this given it does not define `HAVE_GTKGL`.

2 years agopathfind: remove an unnecessary cast
Matthew Fernandez [Mon, 21 Mar 2022 04:45:17 +0000 (21:45 -0700)]
pathfind: remove an unnecessary cast

2 years agoMerge branch 'smattr/E88122C7-BB84-4919-9B41-D44586D94783' into 'main'
Matthew Fernandez [Sat, 26 Mar 2022 03:26:59 +0000 (03:26 +0000)]
Merge branch 'smattr/E88122C7-BB84-4919-9B41-D44586D94783' into 'main'

CMake: enable edgepaint

See merge request graphviz/graphviz!2525

2 years agoCMake: add cmd/edgepaint compilation
Matthew Fernandez [Sat, 19 Mar 2022 21:06:49 +0000 (14:06 -0700)]
CMake: add cmd/edgepaint compilation

Gitlab: #1836

2 years agoCMake: enable lib/edgepaint compilation
Matthew Fernandez [Sat, 19 Mar 2022 20:47:17 +0000 (13:47 -0700)]
CMake: enable lib/edgepaint compilation

Note that the target here is named “edgepaintib” in anticipation of future
enabling of cmd/edgepaint claiming the name “edgepaint”. This also does not
define a separate liblab_gamut, as the Autotools build does. This separate
library seems only useful for cmd/edgepaint, so it does not seem worth splitting
it out as a separate library.

Gitlab: #1836

2 years agolib/edgepaint: remove linking against libANN
Matthew Fernandez [Sat, 19 Mar 2022 21:04:17 +0000 (14:04 -0700)]
lib/edgepaint: remove linking against libANN

For the same motivation as the prior commit, this is unused.

2 years agolib/edgepaint: remove application of ANN’s CFLAGS
Matthew Fernandez [Sat, 19 Mar 2022 20:42:49 +0000 (13:42 -0700)]
lib/edgepaint: remove application of ANN’s CFLAGS

This seems to have been a mistake in aadee957012e676c9aaf36ec40cb2860c178e269.
lib/edgepaint does not depend on libANN, so it does not seem correct to apply
ANN’s CFLAGS when compiling it.

2 years agoMerge branch 'smattr/71744FB7-FA95-46C5-949E-64F986D85872' into 'main'
Matthew Fernandez [Sat, 26 Mar 2022 01:40:28 +0000 (01:40 +0000)]
Merge branch 'smattr/71744FB7-FA95-46C5-949E-64F986D85872' into 'main'

test case for #2215

See merge request graphviz/graphviz!2521

2 years agogvParseArgs etc: use a clearer idiom for accessing characters of 'arg'
Matthew Fernandez [Sat, 19 Mar 2022 17:45:02 +0000 (10:45 -0700)]
gvParseArgs etc: use a clearer idiom for accessing characters of 'arg'

2 years agogvParseArgs etc: remove tests for 'NULL' members in 'argv'
Matthew Fernandez [Sat, 19 Mar 2022 17:42:24 +0000 (10:42 -0700)]
gvParseArgs etc: remove tests for 'NULL' members in 'argv'

The strings in `argv` within the range of `argc` are guaranteed non-null.

2 years agoadd a test case for #2215
Matthew Fernandez [Sat, 19 Mar 2022 17:38:56 +0000 (10:38 -0700)]
add a test case for #2215

2 years agoMerge branch 'smattr/875065A8-89A1-453D-9A36-2C2A8E259B84' into 'main'
Matthew Fernandez [Fri, 25 Mar 2022 15:56:17 +0000 (15:56 +0000)]
Merge branch 'smattr/875065A8-89A1-453D-9A36-2C2A8E259B84' into 'main'

gvpr: remove some sfio, unistd.h dependencies

See merge request graphviz/graphviz!2523

2 years agogvpr: rewrite debug graph processing to use stdio instead of sfio
Matthew Fernandez [Sun, 20 Mar 2022 01:36:40 +0000 (18:36 -0700)]
gvpr: rewrite debug graph processing to use stdio instead of sfio

This cuts a dependency on sfio, as well as a dependency on non-portable unistd.h
functions.

Gitlab: #1998, #2204

2 years agogvpr: rewrite debug I/O output to use stdio instead of unistd
Matthew Fernandez [Sun, 20 Mar 2022 01:29:07 +0000 (18:29 -0700)]
gvpr: rewrite debug I/O output to use stdio instead of unistd

There is no need to use the lower level `write` API for this I/O. By using
`fprintf` instead, we avoid a dependency on non-portable unistd.h.

Gitlab: #2204

2 years agoMerge branch 'smattr/B24E1807-D40B-483F-8529-60C8EB2E4707' into 'main'
Matthew Fernandez [Fri, 25 Mar 2022 05:45:09 +0000 (05:45 +0000)]
Merge branch 'smattr/B24E1807-D40B-483F-8529-60C8EB2E4707' into 'main'

further pathcanon clean up and remove strings.h detection

See merge request graphviz/graphviz!2522

2 years agoremove no longer used strings.h detection
Matthew Fernandez [Sat, 19 Mar 2022 20:19:33 +0000 (13:19 -0700)]
remove no longer used strings.h detection

2 years agorender.h: remove unused strings.h #include
Matthew Fernandez [Sat, 19 Mar 2022 20:18:05 +0000 (13:18 -0700)]
render.h: remove unused strings.h #include

2 years agopathfind: remove unused strings.h #include
Matthew Fernandez [Sat, 19 Mar 2022 20:17:02 +0000 (13:17 -0700)]
pathfind: remove unused strings.h #include

2 years agopathcanon: remove unused 'loop' variable
Matthew Fernandez [Sat, 19 Mar 2022 20:13:17 +0000 (13:13 -0700)]
pathcanon: remove unused 'loop' variable

2 years agopathcanon: remove unnecessary 'errno' save and restore
Matthew Fernandez [Sat, 19 Mar 2022 20:12:20 +0000 (13:12 -0700)]
pathcanon: remove unnecessary 'errno' save and restore

a3db9ad8f8eb79a931f0bc6d087ca3b52de3dd62 removed any logic in this function that
affected `errno`. So there is no need to save and restore it anymore.

2 years agoMerge branch 'smattr/9E1814ED-8451-43CC-A7A1-AAF2BE8EDF86' into 'main'
Matthew Fernandez [Thu, 24 Mar 2022 16:52:38 +0000 (16:52 +0000)]
Merge branch 'smattr/9E1814ED-8451-43CC-A7A1-AAF2BE8EDF86' into 'main'

roll out cgraph allocation wrappers to edgepaint

See merge request graphviz/graphviz!2517

2 years agoccomps: abbreviate an open coded 'gv_strndup'
Matthew Fernandez [Fri, 18 Mar 2022 15:21:23 +0000 (08:21 -0700)]
ccomps: abbreviate an open coded 'gv_strndup'

2 years agocgraph: add a 'strndup' allocation wrapper
Matthew Fernandez [Fri, 18 Mar 2022 15:18:41 +0000 (08:18 -0700)]
cgraph: add a 'strndup' allocation wrapper

2 years agoedgepaint: free 'lightness' prior to exit
Matthew Fernandez [Thu, 17 Mar 2022 04:23:35 +0000 (21:23 -0700)]
edgepaint: free 'lightness' prior to exit

Some small progress to becoming leak-free even on clean exit.

2 years agoedgepaint: replace a 'strdup' with 'gv_strdup'
Matthew Fernandez [Thu, 17 Mar 2022 04:22:48 +0000 (21:22 -0700)]
edgepaint: replace a 'strdup' with 'gv_strdup'

This allocation was not handling failure and the only reasonable response here
is to exit.

2 years agocgraph: add a 'strdup' wrapper to the allocation helpers
Matthew Fernandez [Thu, 17 Mar 2022 04:21:01 +0000 (21:21 -0700)]
cgraph: add a 'strdup' wrapper to the allocation helpers

2 years agoMerge branch 'smattr/2E1672CD-0A70-45B7-8770-A81BE7638FA4' into 'main'
Matthew Fernandez [Sun, 20 Mar 2022 02:42:59 +0000 (02:42 +0000)]
Merge branch 'smattr/2E1672CD-0A70-45B7-8770-A81BE7638FA4' into 'main'

document 'SIGUSR1' handling

See merge request graphviz/graphviz!2515

2 years agodot: make a man page note about 'SIGUSR1' effects
Matthew Fernandez [Wed, 16 Mar 2022 14:42:01 +0000 (07:42 -0700)]
dot: make a man page note about 'SIGUSR1' effects

2 years agoselfRightSpace: consistently use a double for calculating self width
Matthew Fernandez [Mon, 14 Mar 2022 15:09:29 +0000 (08:09 -0700)]
selfRightSpace: consistently use a double for calculating self width

This avoids going backwards and forwards between double and int, which was
causing some compiler warnings and unnecessary loss of precision.

2 years agoMerge branch 'smattr/5d0e6877-4a8c-45a9-b1b5-f83e9328eeaf' into 'main'
Matthew Fernandez [Sat, 19 Mar 2022 21:54:37 +0000 (21:54 +0000)]
Merge branch 'smattr/5d0e6877-4a8c-45a9-b1b5-f83e9328eeaf' into 'main'

add Mingle to the CMake build system

See merge request graphviz/graphviz!2383

2 years agoadd Mingle to the CMake build system
Matthew Fernandez [Sat, 25 Dec 2021 19:25:29 +0000 (11:25 -0800)]
add Mingle to the CMake build system

Gitlab: related to #1835, #1836, #1854

2 years agoCI: install 'libANN' on macOS
Matthew Fernandez [Fri, 11 Mar 2022 14:53:49 +0000 (06:53 -0800)]
CI: install 'libANN' on macOS

This is a dependency of lib/mingle, and transitively cmd/mingle. Note that this
is not available through Homebrew so we need to use MacPorts.

2 years agoCI: move macOS dependency installation out of line
Matthew Fernandez [Fri, 11 Mar 2022 14:49:26 +0000 (06:49 -0800)]
CI: move macOS dependency installation out of line

Makes these a little easier to manage. Note that this also unifies the runtime
dependencies installed in Autotools and CMake jobs which simplifies ongoing
maintenance.

2 years agoCI: rearrange macOS step related to Bison
Matthew Fernandez [Fri, 11 Mar 2022 05:24:46 +0000 (21:24 -0800)]
CI: rearrange macOS step related to Bison

It makes it more obvious why this step is being done when it is adjacent to the
Bison install itself.

2 years agoCI: install 'libann-dev' on Ubuntu
Matthew Fernandez [Fri, 11 Mar 2022 02:56:03 +0000 (18:56 -0800)]
CI: install 'libann-dev' on Ubuntu

This is a dependency of lib/mingle, and transitively cmd/mingle.

2 years agotests: move 'is_cmake' helper into gvtest library
Matthew Fernandez [Fri, 11 Mar 2022 05:20:18 +0000 (21:20 -0800)]
tests: move 'is_cmake' helper into gvtest library

2 years agotests: de-dupe some MinGW detection logic
Matthew Fernandez [Fri, 11 Mar 2022 04:48:10 +0000 (20:48 -0800)]
tests: de-dupe some MinGW detection logic

2 years agotests: move 'is_mingw' helper into gvtest library
Matthew Fernandez [Fri, 11 Mar 2022 04:47:12 +0000 (20:47 -0800)]
tests: move 'is_mingw' helper into gvtest library

2 years agolib/mingle: remove commented out branch
Matthew Fernandez [Sat, 12 Mar 2022 04:16:39 +0000 (20:16 -0800)]
lib/mingle: remove commented out branch

This causes -Wconstant-logical-operand warnings, failing a CMake build on macOS.
It seems simplest to just remove this disabled code.

2 years agolib/mingle: squash -Wconstant-logical-operand warnings
Matthew Fernandez [Sat, 12 Mar 2022 02:44:37 +0000 (18:44 -0800)]
lib/mingle: squash -Wconstant-logical-operand warnings

When enabling this code on macOS, Clang complains about this.

2 years agofix: teach mingle '-?' on macOS and Windows
Matthew Fernandez [Fri, 11 Mar 2022 03:59:09 +0000 (19:59 -0800)]
fix: teach mingle '-?' on macOS and Windows

This is the equivalent of b4925c87f1e28a1bc66d111ef046e4e083db8c5b and friends,
but for mingle. It was not previously detected that this problem also affects
mingle because it is not currently built on macOS or Windows in CI. This will be
improved in future.

Gitlab: #1852

2 years agoMerge branch 'smattr/5A4AA4D3-3163-49C0-9DF1-A0ADA71E3554' into 'main'
Matthew Fernandez [Sat, 19 Mar 2022 18:40:02 +0000 (18:40 +0000)]
Merge branch 'smattr/5A4AA4D3-3163-49C0-9DF1-A0ADA71E3554' into 'main'

Revert "rewrite indexOf"

Closes #2211

See merge request graphviz/graphviz!2513

2 years agoRevert "rewrite indexOf"
Matthew Fernandez [Mon, 14 Mar 2022 05:27:02 +0000 (22:27 -0700)]
Revert "rewrite indexOf"

This reverts commit 84efe93d5c5a4da0e778dbf01ed8550d2d774fdf.

Gitlab: fixes #2211

2 years agoadd a test case for #2211
Matthew Fernandez [Mon, 14 Mar 2022 02:23:28 +0000 (19:23 -0700)]
add a test case for #2211

2 years agotests: abstract the common case for running 'gvpr'
Matthew Fernandez [Mon, 14 Mar 2022 02:20:55 +0000 (19:20 -0700)]
tests: abstract the common case for running 'gvpr'

2 years agoMerge branch 'smattr/106DE02D-AD56-466A-96C1-9D2AC5315DD6' into 'main'
Matthew Fernandez [Sat, 19 Mar 2022 06:46:15 +0000 (06:46 +0000)]
Merge branch 'smattr/106DE02D-AD56-466A-96C1-9D2AC5315DD6' into 'main'

lib/common: some clean up and warning squashing

See merge request graphviz/graphviz!2511

2 years agoprocessTbl: use unsigned shorts for 'r' and 'c' locals
Matthew Fernandez [Sun, 13 Mar 2022 21:10:19 +0000 (14:10 -0700)]
processTbl: use unsigned shorts for 'r' and 'c' locals

Squashes two MSVC conversion warnings.

2 years agosize_html_txt: use a C99 bool for 'simple'
Matthew Fernandez [Sun, 13 Mar 2022 21:07:21 +0000 (14:07 -0700)]
size_html_txt: use a C99 bool for 'simple'

Squashes an MSVC conversion warning.

2 years agoinitAnchor: squash C4244 MSVC warning for 'explicit_tooltip'
Matthew Fernandez [Sun, 13 Mar 2022 21:05:35 +0000 (14:05 -0700)]
initAnchor: squash C4244 MSVC warning for 'explicit_tooltip'

MSVC seems particularly pedantic about implicitly converting an unsigned 1-bit
bitfield to a bool:

  warning C4244: 'function': conversion from 'unsigned int' to 'bool'

These bitfields should really be signed (`int`) but it does not seem worth the
API break to do this.

2 years agohtmlparse.y: remove some unnecessary casts
Matthew Fernandez [Sun, 13 Mar 2022 21:02:11 +0000 (14:02 -0700)]
htmlparse.y: remove some unnecessary casts

2 years agohtmlparse.y: consistently treat 'kind' as a 'char'
Matthew Fernandez [Sun, 13 Mar 2022 20:59:50 +0000 (13:59 -0700)]
htmlparse.y: consistently treat 'kind' as a 'char'

The `kind` field in `htmllabel_t` is a `char`, so this code was causing
conversion compiler warnings when trying to assign an `int` to it. We can avoid
this ambiguity by consistently using the same type everywhere.

2 years agoemit_end_edge: squash C4244 MSVC warnings for 'nodeIntersect' calls
Matthew Fernandez [Sun, 13 Mar 2022 20:50:43 +0000 (13:50 -0700)]
emit_end_edge: squash C4244 MSVC warnings for 'nodeIntersect' calls

MSVC seems particularly pedantic about implicitly converting an unsigned 1-bit
bitfield to a bool:

  warning C4244: 'function': conversion from 'unsigned int' to 'bool'

These bitfields should really be signed (`int`) but it does not seem worth the
API break to do this.

2 years agocheck_control_points: remove a use of int as boolean
Matthew Fernandez [Sun, 13 Mar 2022 20:36:30 +0000 (13:36 -0700)]
check_control_points: remove a use of int as boolean

2 years agoMerge branch 'smattr/4C161FEF-32BC-4E3C-8E1C-1976BC9E6E9C' into 'main'
Matthew Fernandez [Sat, 19 Mar 2022 05:07:14 +0000 (05:07 +0000)]
Merge branch 'smattr/4C161FEF-32BC-4E3C-8E1C-1976BC9E6E9C' into 'main'

pathcanon: clean up dead code

See merge request graphviz/graphviz!2512

2 years agopathcanon: remove 'FS_3D'-guarded code
Matthew Fernandez [Mon, 14 Mar 2022 00:38:59 +0000 (17:38 -0700)]
pathcanon: remove 'FS_3D'-guarded code

Nothing in the build systems defines this macro. It is also unclear how this
code could be used given it calls `pathnext`, a function that has never been
committted to the Graphviz repository.

2 years agoremove now-unused 'pathgetlink'
Matthew Fernandez [Mon, 14 Mar 2022 00:36:55 +0000 (17:36 -0700)]
remove now-unused 'pathgetlink'

2 years agopathcanon: remove 'flags' argument
Matthew Fernandez [Mon, 14 Mar 2022 00:34:07 +0000 (17:34 -0700)]
pathcanon: remove 'flags' argument

This function was only ever called with `0` as `flags`, which disables a lot of
its logic. We can reduce the amount of ongoing code to maintain by paring this
back to just the core in use.

2 years agoMerge branch 'remove-eol-spaces' into 'main'
Matthew Fernandez [Fri, 18 Mar 2022 16:10:30 +0000 (16:10 +0000)]
Merge branch 'remove-eol-spaces' into 'main'

2184.dot: remove eol spaces

See merge request graphviz/graphviz!2516

2 years ago2184.dot: remove eol spaces
Costa Shulyupin [Fri, 18 Mar 2022 07:28:49 +0000 (09:28 +0200)]
2184.dot: remove eol spaces

2 years agoMerge branch 'smattr/050F6C7D-7BC7-444D-9D6C-99C0762069CA' into 'main'
Matthew Fernandez [Fri, 18 Mar 2022 15:07:56 +0000 (15:07 +0000)]
Merge branch 'smattr/050F6C7D-7BC7-444D-9D6C-99C0762069CA' into 'main'

cgraph: implement memory allocation wrappers

See merge request graphviz/graphviz!2510

2 years agoccomps: replace local allocation wrappers with cgraph ones
Matthew Fernandez [Sat, 12 Mar 2022 20:40:16 +0000 (12:40 -0800)]
ccomps: replace local allocation wrappers with cgraph ones

A first example use of the functions from the prior commit.

2 years agocgraph: implement memory allocation wrappers
Matthew Fernandez [Sat, 12 Mar 2022 20:30:35 +0000 (12:30 -0800)]
cgraph: implement memory allocation wrappers

This change replicates and extends the exit-on-failure allocation wrappers from
lib/common/memory.c into a header-only implementation in cgraph. The existing
common wrappers worked but there were two limitations preventing their wider
use:

  1. lib/common is not the base of the Graphviz dependency graph. E.g.
     lib/cgraph does not depend on lib/common, preventing calling
     lib/common/memory.h functions from cgraph code. lib/cgraph is not the base
     of the dependency graph either (it depends on lib/cdt), but it has become a
     de facto home for header-only implementations of general utility functions
     called throughout the rest of the Graphviz code base.

  2. lib/common is not linked against by every Graphviz component. This meant
     other code could attempt to call functions in lib/common/memory.h but would
     fail to link because it was not pulling in lib/common/memory.c.

Relocating these functions neatly solves both the above two. It also has the
side effect of allowing compilers to inline these short wrappers. This could
(and would) previously be achieved with Link-Time Optimization, but now a
regular optimizing compilation can also achieve this.

Future changes will remove the lib/common/memory.c wrappers in favor of these.

2 years agoMerge branch 'truenorth-issue-2184' into 'main'
Matthew Fernandez [Thu, 17 Mar 2022 05:28:42 +0000 (05:28 +0000)]
Merge branch 'truenorth-issue-2184' into 'main'

Attempt to fix initialization of subgraph attributes on existing subgraphs...

See merge request graphviz/graphviz!2504

2 years agoparenthesize conditional blocks and clang-format prior code changes truenorth-issue-2184
Matthew Fernandez [Sun, 13 Mar 2022 17:31:22 +0000 (10:31 -0700)]
parenthesize conditional blocks and clang-format prior code changes

2 years agoAttempt to fix initialization of subgraph attributes on existing subgraphs…
Stephen C North [Mon, 7 Mar 2022 23:39:41 +0000 (18:39 -0500)]
Attempt to fix initialization of subgraph attributes on existing subgraphs…

Attempt to fix initialization of subgraph attributes on existing subgraphs when
a new root graph attribute is created.

Fix issue 2184, initialization of existing subgraph attributes when a new top
level graph attribute is created. Looks ok, but new code unviewsubgraphsattr is
executed on many of the test graphs, so this should be tested carefully.

2 years agoadd #2184 test cases
Matthew Fernandez [Thu, 10 Mar 2022 03:41:56 +0000 (19:41 -0800)]
add #2184 test cases

2 years agoMerge branch 'smattr/BD8C9D81-BF8B-4ED0-8A5F-3611689F010D' into 'main'
Matthew Fernandez [Sun, 13 Mar 2022 21:21:14 +0000 (21:21 +0000)]
Merge branch 'smattr/BD8C9D81-BF8B-4ED0-8A5F-3611689F010D' into 'main'

ccomps: some movement towards thread safety and some clean up

See merge request graphviz/graphviz!2508

2 years agoccomps: remove unnecessary parens
Matthew Fernandez [Sat, 12 Mar 2022 19:37:40 +0000 (11:37 -0800)]
ccomps: remove unnecessary parens

2 years agoccomps: remove redundant 'fflush'
Matthew Fernandez [Sat, 12 Mar 2022 19:37:12 +0000 (11:37 -0800)]
ccomps: remove redundant 'fflush'

Closing a file already flushes all written data to disk.

2 years agoccomps process: more tightly scope temporary buffer usage
Matthew Fernandez [Sat, 12 Mar 2022 19:32:25 +0000 (11:32 -0800)]
ccomps process: more tightly scope temporary buffer usage

This makes it harder to accidentally introduce a use-after-free in this code.

2 years agoccomps processClusters: more tightly scope temporary buffer usage
Matthew Fernandez [Sun, 13 Mar 2022 20:07:51 +0000 (13:07 -0700)]
ccomps processClusters: more tightly scope temporary buffer usage

This makes it harder to accidentally introduce a use-after-free in this code.

2 years agoccomps: remove use of long lived 'getBuf' allocation
Matthew Fernandez [Sat, 12 Mar 2022 19:28:16 +0000 (11:28 -0800)]
ccomps: remove use of long lived 'getBuf' allocation

Allows more localized reasoning. This also makes progress towards thread safety.

2 years agoccomps: remove parameter to 'split'
Matthew Fernandez [Sat, 12 Mar 2022 19:21:45 +0000 (11:21 -0800)]
ccomps: remove parameter to 'split'

This function was retaining a pointer to memory pointed to by its parameter,
`name`, in the global `suffix`. So it is unsafe to call this with anything
except a long lived string. We can make this more obvious/explicit by inlining
the use of `outfile`, the only parameter it is ever called with.

2 years agoccomps: make all internal variables static
Matthew Fernandez [Sat, 12 Mar 2022 19:20:02 +0000 (11:20 -0800)]
ccomps: make all internal variables static

2 years agoMerge branch 'smattr/ec571e5b-baf1-40a7-add9-416a446bd4b2' into 'main'
Matthew Fernandez [Sun, 13 Mar 2022 19:45:44 +0000 (19:45 +0000)]
Merge branch 'smattr/ec571e5b-baf1-40a7-add9-416a446bd4b2' into 'main'

some misc clean up

See merge request graphviz/graphviz!2507

2 years agofinishEdge: remove now-unused 'p' and 'q' parameters
Matthew Fernandez [Sat, 12 Mar 2022 04:29:20 +0000 (20:29 -0800)]
finishEdge: remove now-unused 'p' and 'q' parameters

2 years agofinishEdge: remove now-unused 'p1' and 'q1' locals
Matthew Fernandez [Sat, 12 Mar 2022 04:22:49 +0000 (20:22 -0800)]
finishEdge: remove now-unused 'p1' and 'q1' locals

2 years agomakePolyline: remove now-unused 'p0' and 'q0' locals
Matthew Fernandez [Sat, 12 Mar 2022 04:21:37 +0000 (20:21 -0800)]
makePolyline: remove now-unused 'p0' and 'q0' locals

2 years agomakeStraightEdges: remove now-unused 'p' and 'q' locals
Matthew Fernandez [Sat, 12 Mar 2022 04:20:42 +0000 (20:20 -0800)]
makeStraightEdges: remove now-unused 'p' and 'q' locals

2 years agoaddEdgeLabels: remove unused parameters
Matthew Fernandez [Sat, 12 Mar 2022 04:18:25 +0000 (20:18 -0800)]
addEdgeLabels: remove unused parameters

The use of separate points to the edge itself was removed in commit
24c4a1ce2994b624ba680c74a33aef60ec16de21 in 2011.

2 years agomkMaze: remove unused 'doLbls' parameter
Matthew Fernandez [Sat, 12 Mar 2022 03:54:20 +0000 (19:54 -0800)]
mkMaze: remove unused 'doLbls' parameter

2 years agomkMaze: abbreviate some open coded 'fmax'
Matthew Fernandez [Sat, 12 Mar 2022 03:49:54 +0000 (19:49 -0800)]
mkMaze: abbreviate some open coded 'fmax'

2 years agoMerge branch 'smattr/275A397A-C582-46E4-BA96-18CE75BABA1C' into 'main'
Matthew Fernandez [Sun, 13 Mar 2022 18:31:01 +0000 (18:31 +0000)]
Merge branch 'smattr/275A397A-C582-46E4-BA96-18CE75BABA1C' into 'main'

GD plugin: some minor fixes to use of `gdIOCtxPtr`

See merge request graphviz/graphviz!2509

2 years agoGD plugin: remove repurposing of 'tell' member of I/O context
Matthew Fernandez [Thu, 3 Mar 2022 06:56:11 +0000 (22:56 -0800)]
GD plugin: remove repurposing of 'tell' member of I/O context

The GD plugin was using (abusing) the `gdIOCtx.tell` field as a way to pass
around the Graphviz context through GD library functions and callbacks. The GD
docs¹ have this to say about the `tell` field:

  The seek and tell functions are only required in conjunction with the gd2 file
  format, which supports quick loading of partial images.

The Graphviz GD plugin _is_ using gd2 functionality, so it seems its usage only
works out because it coincidentally does not hit any code paths that use `tell`.

We can avoid this latent issue entirely by rephrasing the way the plugin passes
the Graphviz context around to something less brittle. The approach taken in
this commit is inspired by something like Linux’s `container_of` macro.

¹ https://libgd.github.io/manuals/2.3.3/files/gd_io-h.html#gdIOCtx

2 years agoGD plugin: fix: zero I/O contexts on creation
Matthew Fernandez [Thu, 3 Mar 2022 06:33:39 +0000 (22:33 -0800)]
GD plugin: fix: zero I/O contexts on creation

The GD plugin was creating `gdIOCtx` objects on the stack with some
uninitialized members. At time of writing, the GD docs¹ claim this struct’s
layout is:

  typedef struct gdIOCtx
  {
    int (*getC)(gdIOCtxPtr);
    int (*getBuf)(gdIOCtxPtr, void *, int wanted);

    void (*putC)(gdIOCtxPtr, int);
    int (*putBuf)(gdIOCtxPtr, const void *, int wanted);

    // seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek!
    int (*seek)(gdIOCtxPtr, const int);
    long (*tell)(gdIOCtxPtr);

    void (*gd_free)(gdIOCtxPtr);
  } gdIOCtx;

So Graphviz’ usage was leaving `getC`, `getBuf`, `seek`, and `gd_free`
uninitialized. This seems to work out OK; Graphviz’ usage of libgd apparently
does not involve any code paths that use these members. But this does not seem
to be an API guarantee. This change zeroes these members for future stability.

¹ https://libgd.github.io/manuals/2.3.3/files/gd_io-h.html#gdIOCtx