]> granicus.if.org Git - graphviz/log
graphviz
2 years agogvmap makeMap: remove now unused 'flag' local
Matthew Fernandez [Sat, 30 Jul 2022 01:06:19 +0000 (18:06 -0700)]
gvmap makeMap: remove now unused 'flag' local

2 years agogvmap make_map_from_rectangle_groups: remove now unused 'flag' parameter
Matthew Fernandez [Sat, 30 Jul 2022 01:01:06 +0000 (18:01 -0700)]
gvmap make_map_from_rectangle_groups: remove now unused 'flag' parameter

2 years agogvmap make_map_internal: remove 'flag' parameter
Matthew Fernandez [Sat, 30 Jul 2022 00:56:38 +0000 (17:56 -0700)]
gvmap make_map_internal: remove 'flag' parameter

This is always set to 0 and conveys no information to the caller.

2 years agosparse QuadTree_get_nearest: remove 'flag' parameter
Matthew Fernandez [Sat, 30 Jul 2022 00:52:12 +0000 (17:52 -0700)]
sparse QuadTree_get_nearest: remove 'flag' parameter

This is always set to 0 and conveys no information to the caller.

2 years agosparse QuadTree_get_nearest_internal: remove 'flag' parameter
Matthew Fernandez [Sat, 30 Jul 2022 00:42:04 +0000 (17:42 -0700)]
sparse QuadTree_get_nearest_internal: remove 'flag' parameter

This is always set to 0 and conveys no information to the caller.

2 years agosfdpgen: remove unnecessary casts of 'Operator.data' pointers
Matthew Fernandez [Sat, 30 Jul 2022 00:39:34 +0000 (17:39 -0700)]
sfdpgen: remove unnecessary casts of 'Operator.data' pointers

2 years agosfdpgen SparseMatrix_solve: remove 'flag' parameter
Matthew Fernandez [Sat, 30 Jul 2022 00:35:04 +0000 (17:35 -0700)]
sfdpgen SparseMatrix_solve: remove 'flag' parameter

This is always set to 0 and conveys no information to the caller.

2 years agosfdpgen SparseMatrix_solve: remove unused Jacobi matrix solving
Matthew Fernandez [Sat, 30 Jul 2022 00:30:23 +0000 (17:30 -0700)]
sfdpgen SparseMatrix_solve: remove unused Jacobi matrix solving

This also removes the `method` parameter to this function, which was only ever
set to a single value. This squashes 8 compiler warnings and drops a lot of dead
code.

2 years agoneatogen constrained_majorization_vpsc: s/fabs/fabsf when dealing with floats
Matthew Fernandez [Sat, 30 Jul 2022 00:07:17 +0000 (17:07 -0700)]
neatogen constrained_majorization_vpsc: s/fabs/fabsf when dealing with floats

This squashes a -Wfloat-conversion warning.

2 years agoneatogen stress_majorization_cola: remove unused 'nedges_graph' parameter
Matthew Fernandez [Sat, 30 Jul 2022 00:05:50 +0000 (17:05 -0700)]
neatogen stress_majorization_cola: remove unused 'nedges_graph' parameter

2 years agoneatogen tweakEnd: remove unused 'pl' parameter
Matthew Fernandez [Sat, 30 Jul 2022 00:24:05 +0000 (17:24 -0700)]
neatogen tweakEnd: remove unused 'pl' parameter

2 years agoneatogen addTriEdge: remove unused 'd' parameter
Matthew Fernandez [Sat, 30 Jul 2022 00:24:05 +0000 (17:24 -0700)]
neatogen addTriEdge: remove unused 'd' parameter

This function was ignoring the parameter and calculating the edge distance
itself internally.

2 years agoMerge branch 'point-test-doc' into 'main'
Matthew Fernandez [Wed, 3 Aug 2022 02:57:42 +0000 (02:57 +0000)]
Merge branch 'point-test-doc' into 'main'

pointset: doxygen comments

See merge request graphviz/graphviz!2700

2 years agopointset: doxygen comments
Costa Shulyupin [Wed, 3 Aug 2022 02:57:41 +0000 (02:57 +0000)]
pointset: doxygen comments

2 years agoMerge branch 'partition-doc' into 'main'
Matthew Fernandez [Wed, 3 Aug 2022 01:22:37 +0000 (01:22 +0000)]
Merge branch 'partition-doc' into 'main'

partition.h: add doxygen comments

See merge request graphviz/graphviz!2707

2 years agopartition.h: add doxygen comments
Costa Shulyupin [Sat, 28 May 2022 04:11:52 +0000 (07:11 +0300)]
partition.h: add doxygen comments

2 years agopartition.h: add names of arguments
Costa Shulyupin [Sat, 28 May 2022 04:13:06 +0000 (07:13 +0300)]
partition.h: add names of arguments

and remove by the way redundant `extern`

2 years agoMerge branch 'smattr/312b41d1-07fa-4afd-911f-b761fdd0d6db' into 'main'
Matthew Fernandez [Tue, 2 Aug 2022 05:31:31 +0000 (05:31 +0000)]
Merge branch 'smattr/312b41d1-07fa-4afd-911f-b761fdd0d6db' into 'main'

gvpr warning squashing

See merge request graphviz/graphviz!2774

2 years agogvpr canontoken: use char instead of unsigned char, introduce casts
Matthew Fernandez [Thu, 28 Jul 2022 02:21:45 +0000 (19:21 -0700)]
gvpr canontoken: use char instead of unsigned char, introduce casts

It is not clear to me why this code was using unsigned char when it can do the
same thing with less typing and fewer compiler warnings using char. This also
introduces casts to squash warnings from some of the more pedantic compiler
implementations. See 6c29170f9f29466374fbc6e8e62a1b6916c6bc59 for details.

2 years agogvpr canontoken: remove commented out code
Matthew Fernandez [Thu, 28 Jul 2022 02:17:37 +0000 (19:17 -0700)]
gvpr canontoken: remove commented out code

2 years agogvpr readLine: squash -Wconversion warnings
Matthew Fernandez [Thu, 28 Jul 2022 02:13:15 +0000 (19:13 -0700)]
gvpr readLine: squash -Wconversion warnings

`c` is guaranteed to fit in a char here.

2 years agogvpr freadFile: squash a -Wsign-compare warning
Matthew Fernandez [Thu, 28 Jul 2022 02:11:31 +0000 (19:11 -0700)]
gvpr freadFile: squash a -Wsign-compare warning

2 years agogvpr fwriteFile: squash a -Wsign-compare warning
Matthew Fernandez [Thu, 28 Jul 2022 02:11:01 +0000 (19:11 -0700)]
gvpr fwriteFile: squash a -Wsign-compare warning

2 years agogvpr cloneO: squash a -Wswitch-default warning
Matthew Fernandez [Thu, 28 Jul 2022 02:08:38 +0000 (19:08 -0700)]
gvpr cloneO: squash a -Wswitch-default warning

This switch is exhaustive.

2 years agogvpr copy: squash a -Wswitch-default warning
Matthew Fernandez [Thu, 28 Jul 2022 02:07:24 +0000 (19:07 -0700)]
gvpr copy: squash a -Wswitch-default warning

This switch is exhaustive.

2 years agogvpr rindexOf: return a long instead of int
Matthew Fernandez [Thu, 28 Jul 2022 02:05:51 +0000 (19:05 -0700)]
gvpr rindexOf: return a long instead of int

The only use of this function stores the return value in a long, so lets just
return a long, squashing two compiler warnings.

2 years agogvpr cmppair: squash -Wunused-parameter warnings
Matthew Fernandez [Thu, 28 Jul 2022 01:58:25 +0000 (18:58 -0700)]
gvpr cmppair: squash -Wunused-parameter warnings

This function is used as a callback, so cannot easily have these unused
parameters removed.

2 years agoMerge branch 'smattr/a2930eb8-ba18-4789-bf34-93446083513e' into 'main'
Matthew Fernandez [Sat, 30 Jul 2022 00:56:20 +0000 (00:56 +0000)]
Merge branch 'smattr/a2930eb8-ba18-4789-bf34-93446083513e' into 'main'

lib/ast warning squashing and simplification

See merge request graphviz/graphviz!2773

2 years agoast onematch: simplify string comparisons by using string views
Matthew Fernandez [Sun, 24 Jul 2022 18:06:48 +0000 (11:06 -0700)]
ast onematch: simplify string comparisons by using string views

2 years agoast onematch: fuse comparison against 'xdigi' and 't'
Matthew Fernandez [Sun, 24 Jul 2022 17:49:39 +0000 (10:49 -0700)]
ast onematch: fuse comparison against 'xdigi' and 't'

Freed of the limitations of hash function in the previous commit, we can express
this as a single comparison.

2 years agoast onematch: rephrase hash-based switch into string comparisons
Matthew Fernandez [Sun, 24 Jul 2022 17:44:09 +0000 (10:44 -0700)]
ast onematch: rephrase hash-based switch into string comparisons

This code was using a hand rolled hash function to implement a series of string
comparisons as a jump table. I guess at some point this must have been a
necessary optimization due to limitations of the day’s compilers/machines. In a
modern environment, this is a deoptimization, impeding the compiler’s ability to
understand your intent. Modern compilers know the string comparison functions as
built-ins and can use SIMD¹/SWAR² tricks to emit a short string comparison as a
single instruction. They are also capable of transforming an if-then-else ladder
into a switch if their heuristics predict it will be worthwhile.

¹ https://en.wikipedia.org/wiki/Single_instruction,_multiple_data
² https://en.wikipedia.org/wiki/SWAR

2 years agoast gobble: squash -Wswitch-default warning
Matthew Fernandez [Sun, 24 Jul 2022 17:18:40 +0000 (10:18 -0700)]
ast gobble: squash -Wswitch-default warning

2 years agoast strmatch: squash -Wundef warnings
Matthew Fernandez [Sun, 24 Jul 2022 17:17:53 +0000 (10:17 -0700)]
ast strmatch: squash -Wundef warnings

2 years agoast stresc: squash -Wswitch-default warning
Matthew Fernandez [Sun, 24 Jul 2022 17:07:01 +0000 (10:07 -0700)]
ast stresc: squash -Wswitch-default warning

2 years agoast stresc: remove return value
Matthew Fernandez [Sun, 24 Jul 2022 17:05:08 +0000 (10:05 -0700)]
ast stresc: remove return value

The computation of the return value for this function was relying on string
lengths that fitted in an `int`, something that is generally but not always
true. The compiler complained about this with -Wconversion. The only caller of
this function does not use the return value, so lets just remove it.

2 years agoast: prototype 'pathcanon' in library header instead of inline near its use
Matthew Fernandez [Sun, 24 Jul 2022 16:59:13 +0000 (09:59 -0700)]
ast: prototype 'pathcanon' in library header instead of inline near its use

This squashes a -Wmissing-prototypes, is better style, and is generally inline
with the rest of lib/ast.

2 years agoast fmtbuf: squash -Wsign-compare warning
Matthew Fernandez [Sun, 24 Jul 2022 16:55:56 +0000 (09:55 -0700)]
ast fmtbuf: squash -Wsign-compare warning

This is computing the number of bytes remaining in `buf`; the number of bytes
between a pointer to the current offset and the end of `buf`. Thus it is always
non-negative.

2 years agoast chrtoi: squash -Wswitch-default warning
Matthew Fernandez [Sun, 24 Jul 2022 16:54:52 +0000 (09:54 -0700)]
ast chrtoi: squash -Wswitch-default warning

2 years agoast chrtoi: remove unnecessary cast
Matthew Fernandez [Sun, 24 Jul 2022 16:51:29 +0000 (09:51 -0700)]
ast chrtoi: remove unnecessary cast

2 years agoast chrtoi: squash -Wsign-compare warning
Matthew Fernandez [Sun, 24 Jul 2022 16:50:50 +0000 (09:50 -0700)]
ast chrtoi: squash -Wsign-compare warning

2 years agoMerge branch 'smattr/f2b32419-4ad7-4884-83ff-cc27d7a0667f' into 'main'
Matthew Fernandez [Fri, 29 Jul 2022 01:48:27 +0000 (01:48 +0000)]
Merge branch 'smattr/f2b32419-4ad7-4884-83ff-cc27d7a0667f' into 'main'

sfdpgen warning squashing

See merge request graphviz/graphviz!2772

2 years agosfdpgen: remove unimplemented 'DistanceMatrix_restrict_filtering'
Matthew Fernandez [Sat, 23 Jul 2022 15:42:22 +0000 (08:42 -0700)]
sfdpgen: remove unimplemented 'DistanceMatrix_restrict_filtering'

2 years agosfdpgen maximal_…: remove unused 'randomize' parameter
Matthew Fernandez [Sat, 23 Jul 2022 15:39:08 +0000 (08:39 -0700)]
sfdpgen maximal_…: remove unused 'randomize' parameter

2 years agosfdpgen: make 'UniformStressSmoother_new' a static function
Matthew Fernandez [Sat, 23 Jul 2022 15:34:37 +0000 (08:34 -0700)]
sfdpgen: make 'UniformStressSmoother_new' a static function

This function is not used outside of its containing file.

2 years agosfdpgen UniformStressSmoother_new: remove unused 'flag' parameter
Matthew Fernandez [Sat, 23 Jul 2022 15:33:57 +0000 (08:33 -0700)]
sfdpgen UniformStressSmoother_new: remove unused 'flag' parameter

2 years agosfdpgen UniformStressSmoother_new: remove unused 'x' parameter
Matthew Fernandez [Sat, 23 Jul 2022 15:33:02 +0000 (08:33 -0700)]
sfdpgen UniformStressSmoother_new: remove unused 'x' parameter

2 years agosfdpgen UniformStressSmoother_new: remove unused 'dim' parameter
Matthew Fernandez [Sat, 23 Jul 2022 15:31:47 +0000 (08:31 -0700)]
sfdpgen UniformStressSmoother_new: remove unused 'dim' parameter

2 years agosfdpgen stress_model: remove unused 'A' parameter
Matthew Fernandez [Sat, 23 Jul 2022 15:27:30 +0000 (08:27 -0700)]
sfdpgen stress_model: remove unused 'A' parameter

2 years agosfdpgen: make 'get_stress' static
Matthew Fernandez [Sat, 23 Jul 2022 15:22:58 +0000 (08:22 -0700)]
sfdpgen: make 'get_stress' static

This function is unused outside of its containing file and is only used when
`DEBUG_PRINT` is defined.

2 years agosfdpgen get_stress: remove 'weighted' parameter that is always 1
Matthew Fernandez [Sat, 23 Jul 2022 15:21:28 +0000 (08:21 -0700)]
sfdpgen get_stress: remove 'weighted' parameter that is always 1

2 years agosfdpgen get_stress: remove unused 'data' parameter
Matthew Fernandez [Sat, 23 Jul 2022 15:20:17 +0000 (08:20 -0700)]
sfdpgen get_stress: remove unused 'data' parameter

2 years agosfdpgen jacobi: remove unused 'flag' parameter
Matthew Fernandez [Sat, 23 Jul 2022 15:18:15 +0000 (08:18 -0700)]
sfdpgen jacobi: remove unused 'flag' parameter

2 years agoMerge branch 'smattr/45dc48f2-fa91-42ed-8530-8bcaf9fdb303' into 'main'
Matthew Fernandez [Thu, 28 Jul 2022 02:47:23 +0000 (02:47 +0000)]
Merge branch 'smattr/45dc48f2-fa91-42ed-8530-8bcaf9fdb303' into 'main'

neatogen compiler warning squashing

See merge request graphviz/graphviz!2771

2 years agoneatogen call_tri: remove unused 'dim' parameter
Matthew Fernandez [Sat, 23 Jul 2022 01:16:47 +0000 (18:16 -0700)]
neatogen call_tri: remove unused 'dim' parameter

2 years agoneatogen CMDS_orthog: remove unused 'g' parameter
Matthew Fernandez [Sat, 23 Jul 2022 01:10:55 +0000 (18:10 -0700)]
neatogen CMDS_orthog: remove unused 'g' parameter

2 years agoneatogen constrained_majorization_new_with_gaps: remove unused 'ndim' parameter
Matthew Fernandez [Sat, 23 Jul 2022 01:06:16 +0000 (18:06 -0700)]
neatogen constrained_majorization_new_with_gaps: remove unused 'ndim' parameter

Note that the call to this function from
`constrained_majorization_new_with_gaps` also seems confused about the meaning
of its parameters. But no attempt is made to correct this.

2 years agoneatogen: remove unused 'constrained_majorization_gradient_projection'
Matthew Fernandez [Sat, 23 Jul 2022 01:03:59 +0000 (18:03 -0700)]
neatogen: remove unused 'constrained_majorization_gradient_projection'

This function has seemingly never been used.

2 years agoneatogen computeHierarchyBoundaries: remove unused 'n' parameter
Matthew Fernandez [Sat, 23 Jul 2022 00:56:25 +0000 (17:56 -0700)]
neatogen computeHierarchyBoundaries: remove unused 'n' parameter

2 years agoneatogen mkConstraintG: remove unused 'g' parameter
Matthew Fernandez [Sat, 23 Jul 2022 00:45:45 +0000 (17:45 -0700)]
neatogen mkConstraintG: remove unused 'g' parameter

2 years agoneatogen bfs_bounded: remove unused 'n' parameter
Matthew Fernandez [Sat, 23 Jul 2022 00:40:26 +0000 (17:40 -0700)]
neatogen bfs_bounded: remove unused 'n' parameter

2 years agoneatogen initLayout: remove unused 'graph' parameter
Matthew Fernandez [Sat, 23 Jul 2022 00:32:16 +0000 (17:32 -0700)]
neatogen initLayout: remove unused 'graph' parameter

2 years agoneatogen voronoi: remove unused 'triangulate' parameter
Matthew Fernandez [Sat, 23 Jul 2022 00:29:56 +0000 (17:29 -0700)]
neatogen voronoi: remove unused 'triangulate' parameter

2 years agoMerge branch 'smattr/5fa804c5-668e-4a54-b373-00bc933032d5' into 'main'
Matthew Fernandez [Wed, 27 Jul 2022 15:32:13 +0000 (15:32 +0000)]
Merge branch 'smattr/5fa804c5-668e-4a54-b373-00bc933032d5' into 'main'

more compiler warning squashing

See merge request graphviz/graphviz!2770

2 years agosmyrna on_attrAddBtn_clicked: use const type to squash a -Wcast-qual warning
Matthew Fernandez [Fri, 22 Jul 2022 01:45:23 +0000 (18:45 -0700)]
smyrna on_attrAddBtn_clicked: use const type to squash a -Wcast-qual warning

Unfortunately we cannot also do the same for `attr_name` in this function
because it is passed to a Graphviz function that accepts a non-const pointer.

2 years agosmyrna safestrdup: accept a const pointer
Matthew Fernandez [Fri, 22 Jul 2022 01:44:30 +0000 (18:44 -0700)]
smyrna safestrdup: accept a const pointer

This will simplify an upcoming change.

2 years agosmyrna set_refresh_filters: use const types to squash some -Wcast-qual warnings
Matthew Fernandez [Fri, 22 Jul 2022 01:42:18 +0000 (18:42 -0700)]
smyrna set_refresh_filters: use const types to squash some -Wcast-qual warnings

Unfortunately we cannot also do the same for `attr_name` in this function
because it is passed to a Graphviz function that accepts a non-const pointer.

2 years agosmyrna doApply: remove unused 'doAll' code path
Matthew Fernandez [Fri, 22 Jul 2022 01:37:02 +0000 (18:37 -0700)]
smyrna doApply: remove unused 'doAll' code path

2 years agosmyrna doApply: remove unused 'widget' parameter
Matthew Fernandez [Fri, 22 Jul 2022 01:32:52 +0000 (18:32 -0700)]
smyrna doApply: remove unused 'widget' parameter

Note this also makes `widget` unused in `on_attrApplyBtn_clicked` which is a
Glade callback and cannot have its corresponding parameter removed. So we squash
the resulting warning there.

2 years agosmyrna on_attrAddBtn_clicked: squash -Wunused-parameter warnings
Matthew Fernandez [Fri, 22 Jul 2022 01:31:11 +0000 (18:31 -0700)]
smyrna on_attrAddBtn_clicked: squash -Wunused-parameter warnings

55efb8e562bca6c4090a73712342ac006e133704 that squashes other such warnings in
this file missed that these are also unused in `on_attrAddBtn_clicked`.

2 years agosmyrna mOpenSlot: squash -Wunused-parameter warnings
Matthew Fernandez [Fri, 22 Jul 2022 01:27:41 +0000 (18:27 -0700)]
smyrna mOpenSlot: squash -Wunused-parameter warnings

bd869436742887a0089f5ad817ecb36a1546987c that squashed other such warnings in
this file, missed that these are also unused in `mOpenSlot`.

2 years agosmyrna btnToolFit_clicked: use float literals to simplify some code
Matthew Fernandez [Fri, 22 Jul 2022 01:26:15 +0000 (18:26 -0700)]
smyrna btnToolFit_clicked: use float literals to simplify some code

2 years agosmyrna btnToolZoomFit_clicked: rephrase unorthodox ternaries
Matthew Fernandez [Fri, 22 Jul 2022 01:24:25 +0000 (18:24 -0700)]
smyrna btnToolZoomFit_clicked: rephrase unorthodox ternaries

This function was using assignments on the right hand sides of ternary
expressions. This is technically allowed, but leads to very hard to read code.

2 years agosmyrna toolboxcallbacks: remove unnecessary parens
Matthew Fernandez [Fri, 22 Jul 2022 01:20:15 +0000 (18:20 -0700)]
smyrna toolboxcallbacks: remove unnecessary parens

This also adjusts the location of some variable definitions to C99 style.

2 years agosmyrna toolboxcallbacks: remove excess white space
Matthew Fernandez [Fri, 22 Jul 2022 01:18:00 +0000 (18:18 -0700)]
smyrna toolboxcallbacks: remove excess white space

2 years agosmyrna toolboxcallbacks: squash -Wunused-parameter warnings
Matthew Fernandez [Fri, 22 Jul 2022 01:16:34 +0000 (18:16 -0700)]
smyrna toolboxcallbacks: squash -Wunused-parameter warnings

These functions are used as Glade callbacks, so need to conform to particular
type signatures.

2 years agosmyrna topviewsettings: squash -Wunused-parameter warnings
Matthew Fernandez [Fri, 22 Jul 2022 01:14:08 +0000 (18:14 -0700)]
smyrna topviewsettings: squash -Wunused-parameter warnings

These functions are used as Glade callbacks, so need to conform to particular
type signatures.

2 years agosmyrna load_settings_from_graph: remove unused 'g' parameter
Matthew Fernandez [Fri, 22 Jul 2022 01:08:04 +0000 (18:08 -0700)]
smyrna load_settings_from_graph: remove unused 'g' parameter

2 years agotclpkg tclGdSizeCmd: squash an -Wunused-parameter warning
Matthew Fernandez [Fri, 22 Jul 2022 01:05:09 +0000 (18:05 -0700)]
tclpkg tclGdSizeCmd: squash an -Wunused-parameter warning

This parameter cannot easily be removed because this function is used as a
callback and needs to conform to a particular type signature.

2 years agoMerge branch 'smattr/d5eaf8b2-870d-4ef0-9557-51428f498a1b' into 'main'
Matthew Fernandez [Tue, 26 Jul 2022 03:00:38 +0000 (03:00 +0000)]
Merge branch 'smattr/d5eaf8b2-870d-4ef0-9557-51428f498a1b' into 'main'

misc simplification

See merge request graphviz/graphviz!2768

2 years agoPango plugin: remove unnecessary cast
Matthew Fernandez [Tue, 19 Jul 2022 03:00:30 +0000 (20:00 -0700)]
Pango plugin: remove unnecessary cast

2 years agoGDK plugin: remove unnecessary casts
Matthew Fernandez [Tue, 19 Jul 2022 03:00:16 +0000 (20:00 -0700)]
GDK plugin: remove unnecessary casts

2 years agoGD plugin: remove unnecessary casts
Matthew Fernandez [Tue, 19 Jul 2022 02:59:46 +0000 (19:59 -0700)]
GD plugin: remove unnecessary casts

2 years agorsvg plugin gvloadimage_rsvg_cairo: remove unnecessary cast
Matthew Fernandez [Tue, 19 Jul 2022 02:49:22 +0000 (19:49 -0700)]
rsvg plugin gvloadimage_rsvg_cairo: remove unnecessary cast

2 years agoglcomp plugin file_exists: simplify readability test
Matthew Fernandez [Tue, 19 Jul 2022 02:46:29 +0000 (19:46 -0700)]
glcomp plugin file_exists: simplify readability test

We do not need to open a file to test if it is readable.

2 years agoexpr extoken_fn: simplify hex parsing loop
Matthew Fernandez [Tue, 19 Jul 2022 02:42:42 +0000 (19:42 -0700)]
expr extoken_fn: simplify hex parsing loop

2 years agoexpr prformat: replace pointer and extent with central string view abstraction
Matthew Fernandez [Tue, 19 Jul 2022 02:30:50 +0000 (19:30 -0700)]
expr prformat: replace pointer and extent with central string view abstraction

2 years agocommon: remove some unnecessary casts
Matthew Fernandez [Tue, 19 Jul 2022 02:25:57 +0000 (19:25 -0700)]
common: remove some unnecessary casts

2 years agoMerge branch 'fix-subgraph-layout-and-rendering' into 'main'
Magnus Jacobsson [Mon, 25 Jul 2022 19:26:06 +0000 (19:26 +0000)]
Merge branch 'fix-subgraph-layout-and-rendering' into 'main'

Fix subgraph layout and rendering

Closes #1800

See merge request graphviz/graphviz!2767

2 years agoremove GD_drawing(g) NULL guard
Magnus Jacobsson [Tue, 12 Jul 2022 13:15:50 +0000 (15:15 +0200)]
remove GD_drawing(g) NULL guard

This guard is unnecessary since `graph_cleanup` alrady has the
necessary guards. This also ensures that the Agraphinfo_t record and
the graph's label is cleaned away even if the graph for some reason
doesn't have a drawing (can this ever happen?).

2 years agogvFreeLayout: correct comments about reset and root graph
Magnus Jacobsson [Tue, 12 Jul 2022 13:04:57 +0000 (15:04 +0200)]
gvFreeLayout: correct comments about reset and root graph

This comment was added in 44b02b91bd156cb832894fb4948bf4bc75ab27cb,
but this commit changed the cleanup to work on the given graph
(possibly a subgraph), not the root graph. The resets mentioned were
removed in 67acd9e27a053a5b80b3d1458f512d472debb434,
b3b7e0d1aea43baa81bf06a27d38447d6958c1b8 and
a71555a4ac650bf91396c77c277697b45eee44e6, although the called
`graph_cleanup` function does its own reset.

2 years agogvFreeLayout: remove incorrect comment about only the root graph having a drawing
Magnus Jacobsson [Wed, 6 Jul 2022 12:56:16 +0000 (14:56 +0200)]
gvFreeLayout: remove incorrect comment about only the root graph having a drawing

This comment was added in c55b546e3965a8dfd2a66763961c4a8003e433bf,
but both subgraphs and root graphs have a reference to (the same)
drawing through this statement in gvLayoutJobs:

    GD_drawing(agroot(g)) = GD_drawing(g);

2 years agotwopigen: layout: fix heap-buffer-overflow by storing dimension in root graph
Magnus Jacobsson [Mon, 18 Jul 2022 13:02:59 +0000 (15:02 +0200)]
twopigen: layout: fix heap-buffer-overflow by storing dimension in root graph

The layout allocates memory based on the dimension of the root graph,
but since the dimension was stored in the subgraph and the dimension
in the root graph defaulted to zero, too little memory was allocated.

An alternative solution would have been to use the dimension of the
subgraph, but this had other implications and the chosen solution is
the same as what the other two layout engines supporting the dim
attribute (neato and sfdp) use. Twopi always uses two dimensions.

This fixes the last memory issue detected by ASan in the
test_subgraph_layout test, which now runs without failures.

2 years agocircogen: layout: fix heap-buffer-overflow by storing dimension in root graph
Magnus Jacobsson [Mon, 18 Jul 2022 12:56:45 +0000 (14:56 +0200)]
circogen: layout: fix heap-buffer-overflow by storing dimension in root graph

The layout allocates memory based on the dimension of the root graph,
but since the dimension was stored in the subgraph and the dimension
in the root graph defaulted to zero, too little memory was allocated.

An alternative solution would have been to use the dimension of the
subgraph, but this had other implications and the chosen solution is
the same as what the other two layout engines supporting the `dim`
attribute (neato and sfdp) use. Circo always uses two dimensions.

2 years agofdpgen: layout: fix heap-buffer-overflow by storing dimension in root graph
Magnus Jacobsson [Mon, 18 Jul 2022 12:17:04 +0000 (14:17 +0200)]
fdpgen: layout: fix heap-buffer-overflow by storing dimension in root graph

The layout allocates memory based on the dimension of the root graph,
but since the dimension was stored in the subgraph and the dimension
in the root graph defaulted to zero, too little memory was allocated.

An alternative solution would have been to use the dimension of the
subgraph, but this had other implications and the chosen solution is
the same as what the other two layout engines supporting the `dim`
attribute (neato and sfdp) use.

2 years agogvRender*: render subgraph when given, not always root graph
Magnus Jacobsson [Mon, 18 Jul 2022 15:46:01 +0000 (17:46 +0200)]
gvRender*: render subgraph when given, not always root graph

These functions always rendered the root graph, even if a sub graph
was given. Apart from being incorrect, this caused
heap-buffer-overflow when trying to render a graph consisting of two
subgraph of which only one had a layout. Also, even if both subgraphs
had layouts, they somehow mixed up the bounding boxes of the graphs
causing some nodes and edges not to be rendered since they were
outside the graph bounding box.

2 years agogvLayoutJobs: initialize also root graph if it isn't already
Magnus Jacobsson [Wed, 13 Jul 2022 06:17:54 +0000 (08:17 +0200)]
gvLayoutJobs: initialize also root graph if it isn't already

The root graph info is needed by gvLayoutJobs when doing subgraph
layout. This fixes a heap-buffer-overflow detected by ASan in the
test_subgraph_layout test.

2 years agoadd new test test_subgraph_layout
Magnus Jacobsson [Tue, 12 Jul 2022 13:52:26 +0000 (15:52 +0200)]
add new test test_subgraph_layout

This test is run in CI with ASan leak detection enabled. It currectly
fails because ASan detects several memory issues in various layout
engines.

2 years agopatchwork: fix memory leak by freeing cluster data in graph cleanup
Magnus Jacobsson [Mon, 18 Jul 2022 07:53:21 +0000 (09:53 +0200)]
patchwork: fix memory leak by freeing cluster data in graph cleanup

This fixes a memory leak detected by ASan in the test_clusters test,
which now runs without failures

2 years agodotgen cluster: fix memory leaks by freeing data from removed rank leaders
Magnus Jacobsson [Mon, 18 Jul 2022 07:47:15 +0000 (09:47 +0200)]
dotgen cluster: fix memory leaks by freeing data from removed rank leaders

The `build_skeleton` function inserts virtual nodes and edges into the
graph to be used by the clustering algorithms. The `expand_cluster`
function later installs real nodes or sub-clusters and deletes the
virtual nodes and edges by calling the `remove_rank_leaders` function
which removes these from the graph. However, it didn't free the data
allocated for them which caused several memory leaks.

2 years agoadd new test case test_clusters
Magnus Jacobsson [Sun, 10 Jul 2022 08:47:22 +0000 (10:47 +0200)]
add new test case test_clusters

Upcoming commits in this series will make changes to subgraph layout
and since clusters are also subgraphs, we want to weed out any memory
issues related to clusters separately.

This test is run in CI with ASan leak detection enabled. It currectly
fails because ASan detects memory leaks in the dot and patchwork
layout engines.