]> granicus.if.org Git - graphviz/log
graphviz
2 years agoGD plugin vrml_begin_job: use cgraph wrapper for allocation
Matthew Fernandez [Sun, 4 Sep 2022 19:35:51 +0000 (12:35 -0700)]
GD plugin vrml_begin_job: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agocore plugin: remove unused memory.h include
Matthew Fernandez [Sun, 4 Sep 2022 19:35:28 +0000 (12:35 -0700)]
core plugin: remove unused memory.h include

2 years agocore plugin insert: fix unchecked allocation failure
Matthew Fernandez [Sun, 4 Sep 2022 19:34:47 +0000 (12:34 -0700)]
core plugin insert: fix unchecked allocation failure

2 years agocore plugin write_edges: use cgraph wrapper for allocation
Matthew Fernandez [Sun, 4 Sep 2022 19:34:11 +0000 (12:34 -0700)]
core plugin write_edges: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoMerge branch 'extend-svg-analyzer-to-handle-graphviz-penwidth-pencolor-and-fillcolor...
Magnus Jacobsson [Mon, 5 Sep 2022 08:05:24 +0000 (08:05 +0000)]
Merge branch 'extend-svg-analyzer-to-handle-graphviz-penwidth-pencolor-and-fillcolor-attributes' into 'main'

Extend the SVG analyzer to handle Graphviz penwidth, pencolor and fillcolor attributes

See merge request graphviz/graphviz!2808

2 years agotests: SVGAnalyzer: add support for retrieving the Graphviz edge fillcolor
Magnus Jacobsson [Tue, 23 Aug 2022 09:25:17 +0000 (11:25 +0200)]
tests: SVGAnalyzer: add support for retrieving the Graphviz edge fillcolor

2 years agotests: SVGAnalyzer: add support for retrieving the Graphviz node fillcolor
Magnus Jacobsson [Sat, 13 Aug 2022 13:53:15 +0000 (15:53 +0200)]
tests: SVGAnalyzer: add support for retrieving the Graphviz node fillcolor

2 years agotests: test_utilities: declare unmodified parameter const
Magnus Jacobsson [Tue, 23 Aug 2022 11:52:45 +0000 (13:52 +0200)]
tests: test_utilities: declare unmodified parameter const

2 years agotests: SVGAnalyzer: add handling of the 'fill-opacity' attribute
Magnus Jacobsson [Wed, 10 Aug 2022 14:40:44 +0000 (16:40 +0200)]
tests: SVGAnalyzer: add handling of the 'fill-opacity' attribute

2 years agotests: SVGAnalyzer: add support for retrieving the Graphviz edge color
Magnus Jacobsson [Tue, 23 Aug 2022 08:55:14 +0000 (10:55 +0200)]
tests: SVGAnalyzer: add support for retrieving the Graphviz edge color

2 years agotests: SVGAnalyzer: add support for retrieving the Graphviz node color
Magnus Jacobsson [Wed, 10 Aug 2022 13:54:00 +0000 (15:54 +0200)]
tests: SVGAnalyzer: add support for retrieving the Graphviz node color

2 years agotests: SVGAnalyzer: factor out rgb_to_hex() and add support for opacity
Magnus Jacobsson [Thu, 11 Aug 2022 18:51:55 +0000 (20:51 +0200)]
tests: SVGAnalyzer: factor out rgb_to_hex() and add support for opacity

2 years agotests: SVGAnalyzer: clarify comment
Magnus Jacobsson [Tue, 23 Aug 2022 11:26:37 +0000 (13:26 +0200)]
tests: SVGAnalyzer: clarify comment

2 years agotests: SVGAnalyzer: add handling of the 'stroke-opacity' attribute
Magnus Jacobsson [Wed, 10 Aug 2022 12:33:02 +0000 (14:33 +0200)]
tests: SVGAnalyzer: add handling of the 'stroke-opacity' attribute

2 years agotests: SVGAnalyzer: add support for retrieving the Graphviz edge penwidth
Magnus Jacobsson [Tue, 23 Aug 2022 08:26:24 +0000 (10:26 +0200)]
tests: SVGAnalyzer: add support for retrieving the Graphviz edge penwidth

2 years agotests: SVGAnalyzer: add support for retrieving the Graphviz node penwidth
Magnus Jacobsson [Wed, 10 Aug 2022 09:26:23 +0000 (11:26 +0200)]
tests: SVGAnalyzer: add support for retrieving the Graphviz node penwidth

2 years agotests: SVGAnalyzer: add handling of the 'stroke-width' attribute
Magnus Jacobsson [Wed, 10 Aug 2022 07:36:08 +0000 (09:36 +0200)]
tests: SVGAnalyzer: add handling of the 'stroke-width' attribute

2 years agotests: SVGAnalyzer: add 're_create_and_verify_svg' method and use in test_svg_analyzer
Magnus Jacobsson [Sat, 20 Aug 2022 16:12:54 +0000 (18:12 +0200)]
tests: SVGAnalyzer: add 're_create_and_verify_svg' method and use in test_svg_analyzer

Upcoming commits will extend the SVG analyzer's ability to handle new
SVG attributes and add new test cases verifying its ability to
re-create correct SVG containing those attributes. This change will
facilitate the creation of those tests and keep the code DRY.

2 years agotests: SVGAnalyzer: extend 'make_from_dot' method and use in test_svg_analyzer
Magnus Jacobsson [Sat, 20 Aug 2022 16:12:54 +0000 (18:12 +0200)]
tests: SVGAnalyzer: extend 'make_from_dot' method and use in test_svg_analyzer

This change adds support to the SVGAnalyzer for saving a
copy of the Graphviz version and build ID which are needed to exactly
re-create the SVG document.

Upcoming commits will extend the SVG analyzer's ability to handle new
SVG attributes and add new test cases verifying its ability to
re-create correct SVG containing those attributes. This change will
facilitate the creation of those tests and keep the code DRY.

2 years agotests: SVGAnalyzer: save a copy of the original SVG and give access to it
Magnus Jacobsson [Fri, 2 Sep 2022 09:57:40 +0000 (11:57 +0200)]
tests: SVGAnalyzer: save a copy of the original SVG and give access to it

This is needed to be able to verify the SVG re-creating capablility of
the SVGAnalyzer.

Upcoming commits will extend the SVG analyzer's ability to handle new
SVG attributes and add new test cases verifying its ability to
re-create correct SVG containing those attributes. This change will
facilitate the creation of those tests and keep the code DRY.

The copying is necessary since the original SVG is modified by the XML
parser in destructive mode. See
http://rapidxml.sourceforge.net/manual.html#namespacerapidxml_1destructive_non_destructive
and we don't want to use the non-destructive mode since no entity
reference translation is done then and we want to avoid having to do
that ourselves.

2 years agoMerge branch 'smattr/6be69cc6-9ab8-4a2a-ae79-087aec1d9525' into 'main'
Matthew Fernandez [Mon, 5 Sep 2022 00:25:34 +0000 (00:25 +0000)]
Merge branch 'smattr/6be69cc6-9ab8-4a2a-ae79-087aec1d9525' into 'main'

ortho: use cgraph wrappers for allocation

See merge request graphviz/graphviz!2821

2 years agoortho mkMaze: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:13:54 +0000 (11:13 -0700)]
ortho mkMaze: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho mkMazeGraph: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:13:16 +0000 (11:13 -0700)]
ortho mkMazeGraph: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho PQgen: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:10:42 +0000 (11:10 -0700)]
ortho PQgen: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho partition: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:09:49 +0000 (11:09 -0700)]
ortho partition: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho monotonate_trapezoids: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:09:19 +0000 (11:09 -0700)]
ortho monotonate_trapezoids: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho mkStack: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:03:48 +0000 (11:03 -0700)]
ortho mkStack: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho make_graph: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:03:24 +0000 (11:03 -0700)]
ortho make_graph: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho createSGraph: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:02:14 +0000 (11:02 -0700)]
ortho createSGraph: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho initSEdges: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:01:45 +0000 (11:01 -0700)]
ortho initSEdges: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho construct_trapezoids: use cgraph wrapper for allocation
Matthew Fernandez [Sat, 3 Sep 2022 18:00:14 +0000 (11:00 -0700)]
ortho construct_trapezoids: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho orthoEdges: use cgraph wrappers for allocation
Matthew Fernandez [Sat, 3 Sep 2022 17:58:35 +0000 (10:58 -0700)]
ortho orthoEdges: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho attachOrthoEdges: use cgraph wrapper for allocation
Matthew Fernandez [Sat, 3 Sep 2022 17:58:02 +0000 (10:58 -0700)]
ortho attachOrthoEdges: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho extractVChans: use cgraph wrapper for allocation
Matthew Fernandez [Sat, 3 Sep 2022 17:57:40 +0000 (10:57 -0700)]
ortho extractVChans: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho extractHChans: use cgraph wrapper for allocation
Matthew Fernandez [Sat, 3 Sep 2022 17:57:12 +0000 (10:57 -0700)]
ortho extractHChans: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho addChan: use cgraph wrapper for allocation
Matthew Fernandez [Sat, 3 Sep 2022 17:56:31 +0000 (10:56 -0700)]
ortho addChan: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoortho convertSPtoRoute: use cgraph wrapper for allocation
Matthew Fernandez [Sat, 3 Sep 2022 17:55:41 +0000 (10:55 -0700)]
ortho convertSPtoRoute: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agoMerge branch 'smattr/gitlab-2270' into 'main'
Matthew Fernandez [Sun, 4 Sep 2022 23:31:49 +0000 (23:31 +0000)]
Merge branch 'smattr/gitlab-2270' into 'main'

Revert "gvc auto_output_filename: avoid 'strdup' when constructing file name"

Closes #2270

See merge request graphviz/graphviz!2822

2 years agoRevert "gvc auto_output_filename: avoid 'strdup' when constructing file name"
Matthew Fernandez [Sun, 4 Sep 2022 18:44:01 +0000 (11:44 -0700)]
Revert "gvc auto_output_filename: avoid 'strdup' when constructing file name"

This reverts commit 4291cc769a3eeef8b1c171e5479194733a4da6cd. This commit that
was intended to be a functional no-op actually altered the generated output
filename to remove `.` characters.

Github: xflr6/graphviz #178, NixOS/nixpkgs #188175
Gitlab: fixes #2270
Reported-by: Sebastian Bank <sebastian.bank@uni-leipzig.de>
2 years agoadd a test case for #2270
Matthew Fernandez [Sun, 4 Sep 2022 18:43:38 +0000 (11:43 -0700)]
add a test case for #2270

2 years agoMerge branch 'smattr/1fac7330-9d40-4de2-be68-925e698f5285' into 'main'
Matthew Fernandez [Sun, 4 Sep 2022 18:24:56 +0000 (18:24 +0000)]
Merge branch 'smattr/1fac7330-9d40-4de2-be68-925e698f5285' into 'main'

smyrna: migration to cgraph wrappers for allocation

See merge request graphviz/graphviz!2820

2 years agotests: SVGAnalyzer: add 'make_from_dot' static method and use in test_rankdir
Magnus Jacobsson [Tue, 23 Aug 2022 07:11:02 +0000 (09:11 +0200)]
tests: SVGAnalyzer: add 'make_from_dot' static method and use in test_rankdir

Upcoming commits will add several new test cases doing exactly
that. This change will keep those tests short and DRY.

2 years agosmyrna: remove unused memory.h includes
Matthew Fernandez [Fri, 2 Sep 2022 02:03:36 +0000 (19:03 -0700)]
smyrna: remove unused memory.h includes

2 years agosmyrna load_attributes: use cgraph wrapper for allocation
Matthew Fernandez [Fri, 2 Sep 2022 01:57:58 +0000 (18:57 -0700)]
smyrna load_attributes: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna main: use cgraph wrapper for allocations
Matthew Fernandez [Fri, 2 Sep 2022 01:54:37 +0000 (18:54 -0700)]
smyrna main: use cgraph wrapper for allocations

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna smyrnaPath: use cgraph wrapper for allocation
Matthew Fernandez [Fri, 2 Sep 2022 01:53:49 +0000 (18:53 -0700)]
smyrna smyrnaPath: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna initFocus: use cgraph wrapper for allocations
Matthew Fernandez [Fri, 2 Sep 2022 01:51:33 +0000 (18:51 -0700)]
smyrna initFocus: use cgraph wrapper for allocations

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna positionAllItems: use cgraph wrapper for allocations
Matthew Fernandez [Fri, 2 Sep 2022 01:51:09 +0000 (18:51 -0700)]
smyrna positionAllItems: use cgraph wrapper for allocations

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna makeXDotSpline: use cgraph wrapper for allocations
Matthew Fernandez [Fri, 2 Sep 2022 01:48:54 +0000 (18:48 -0700)]
smyrna makeXDotSpline: use cgraph wrapper for allocations

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna mTestgvpr: use cgraph wrapper for allocation
Matthew Fernandez [Fri, 2 Sep 2022 01:46:04 +0000 (18:46 -0700)]
smyrna mTestgvpr: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna new_viewport_camera: use cgraph wrapper for allocation
Matthew Fernandez [Fri, 2 Sep 2022 01:44:28 +0000 (18:44 -0700)]
smyrna new_viewport_camera: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna new_viewport_camera: use cgraph wrapper for allocation
Matthew Fernandez [Fri, 2 Sep 2022 01:44:01 +0000 (18:44 -0700)]
smyrna new_viewport_camera: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna prepare_topological_fisheye: use cgraph wrapper for allocations
Matthew Fernandez [Fri, 2 Sep 2022 01:38:03 +0000 (18:38 -0700)]
smyrna prepare_topological_fisheye: use cgraph wrapper for allocations

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna makeGraph: use cgraph wrapper for allocations
Matthew Fernandez [Fri, 2 Sep 2022 01:37:24 +0000 (18:37 -0700)]
smyrna makeGraph: use cgraph wrapper for allocations

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna attr_list_add: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 01:30:01 +0000 (18:30 -0700)]
smyrna attr_list_add: fix unchecked allocation failure

2 years agosmyrna attr_list_new: fix unchecked allocation failures
Matthew Fernandez [Fri, 2 Sep 2022 01:29:37 +0000 (18:29 -0700)]
smyrna attr_list_new: fix unchecked allocation failures

2 years agosmyrna new_attr_ref: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 01:29:13 +0000 (18:29 -0700)]
smyrna new_attr_ref: fix unchecked allocation failure

2 years agosmyrna new_attr: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 01:28:56 +0000 (18:28 -0700)]
smyrna new_attr: fix unchecked allocation failure

2 years agosmyrna create_color_theme: use cgraph wrapper for allocations
Matthew Fernandez [Fri, 2 Sep 2022 01:17:10 +0000 (18:17 -0700)]
smyrna create_color_theme: use cgraph wrapper for allocations

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna init_viewport: use cgraph wrapper for allocations
Matthew Fernandez [Fri, 2 Sep 2022 01:14:51 +0000 (18:14 -0700)]
smyrna init_viewport: use cgraph wrapper for allocations

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna add_graph_to_viewport: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 01:14:05 +0000 (18:14 -0700)]
smyrna add_graph_to_viewport: fix unchecked allocation failure

2 years agosmyrna load_mouse_actions: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 01:12:22 +0000 (18:12 -0700)]
smyrna load_mouse_actions: fix unchecked allocation failure

2 years agosmyrna add_selpoly: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 01:02:37 +0000 (18:02 -0700)]
smyrna add_selpoly: fix unchecked allocation failure

2 years agosmyrna clear_selpoly: simplify some 'free' code
Matthew Fernandez [Fri, 2 Sep 2022 01:01:04 +0000 (18:01 -0700)]
smyrna clear_selpoly: simplify some 'free' code

2 years agosmyrna Render_Contour2: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 00:59:12 +0000 (17:59 -0700)]
smyrna Render_Contour2: fix unchecked allocation failure

2 years agosmyrna combineCallback: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 00:58:17 +0000 (17:58 -0700)]
smyrna combineCallback: fix unchecked allocation failure

2 years agosmyrna clearGrid: use cgraph wrapper for allocation
Matthew Fernandez [Fri, 2 Sep 2022 00:48:55 +0000 (17:48 -0700)]
smyrna clearGrid: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna update_tree: use cgraph wrapper for allocation
Matthew Fernandez [Fri, 2 Sep 2022 00:53:09 +0000 (17:53 -0700)]
smyrna update_tree: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna add_column: use cgraph wrapper for allocation
Matthew Fernandez [Fri, 2 Sep 2022 00:47:46 +0000 (17:47 -0700)]
smyrna add_column: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosmyrna add_column: fix unchecked allocation failure
Matthew Fernandez [Fri, 2 Sep 2022 00:46:47 +0000 (17:46 -0700)]
smyrna add_column: fix unchecked allocation failure

2 years agoMerge branch 'smattr/8ef08678-9ef1-4024-90bf-ffca3cd5dbaa' into 'main'
Matthew Fernandez [Wed, 31 Aug 2022 01:45:09 +0000 (01:45 +0000)]
Merge branch 'smattr/8ef08678-9ef1-4024-90bf-ffca3cd5dbaa' into 'main'

sfdpgen cgraph/alloc.h migration, clean up, fixing incorrect 'MAX' calls

Closes #2269

See merge request graphviz/graphviz!2819

2 years agosparse SparseMatrix_coordinate_form_add_entry: abbreviate no-op 'MAX' call
Matthew Fernandez [Sun, 28 Aug 2022 20:23:01 +0000 (13:23 -0700)]
sparse SparseMatrix_coordinate_form_add_entry: abbreviate no-op 'MAX' call

d1d1ae30865c14bb7e6a75f8772543c10419e48b seems to have incorrectly assumed
multiplication has a higher precedence than casts. In reality, it is the
opposite, meaning the first parameter to this `MAX` call was always 0. So the
entire expression would evaluate to 10. Empirically this seems to have been fine
since this code has been in use for over a decade with no specific problems
blamed on this area. So lets just abbreviate it into what it evaluates to.

Gitlab: fixes #2269

2 years agosparse check_or_realloc_arrays: abbreviate no-op 'MAX' call
Matthew Fernandez [Sun, 28 Aug 2022 20:21:18 +0000 (13:21 -0700)]
sparse check_or_realloc_arrays: abbreviate no-op 'MAX' call

1b847b5abf50d2ab0701523b90a20306d0ee5528 seems to have incorrectly assumed
multiplication has a higher precedence than casts. In reality, it is the
opposite, meaning the first parameter to this `MAX` call was always 0. So the
entire expression would evaluate to 10. Empirically this seems to have been fine
since this code has been in use for over a decade with no specific problems
blamed on this area. So lets just abbreviate it into what it evaluates to.

Gitlab: #2269

2 years agoneatogen stress_majorization_with_hierarchy: abbreviate a double literal
Matthew Fernandez [Sun, 28 Aug 2022 20:20:47 +0000 (13:20 -0700)]
neatogen stress_majorization_with_hierarchy: abbreviate a double literal

2 years agogvmap add_point: abbreviate no-op 'MAX' call
Matthew Fernandez [Sun, 28 Aug 2022 20:19:54 +0000 (13:19 -0700)]
gvmap add_point: abbreviate no-op 'MAX' call

c193a91a0e9d8565e85bd6953a2c64e971d6ab79 seems to have incorrectly assumed
multiplication has a higher precedence than casts. In reality, it is the
opposite, meaning the first parameter to this `MAX` call was always 0. So the
entire expression would evaluate to 20. Empirically this seems to have been fine
since this code has been in use for over a decade with no specific problems
blamed on this area. So lets just abbreviate it into what it evaluates to.

Gitlab: #2269

2 years agosfdpgen check_int_array_size: abbreviate no-op 'MAX' call
Matthew Fernandez [Sun, 28 Aug 2022 20:14:16 +0000 (13:14 -0700)]
sfdpgen check_int_array_size: abbreviate no-op 'MAX' call

1b847b5abf50d2ab0701523b90a20306d0ee5528 seems to have incorrectly assumed
multiplication has a higher precedence than casts. In reality, it is the
opposite, meaning the first parameter to this `MAX` call was always 0. So the
entire expression would evaluate to 10. Empirically this seems to have been fine
since this code has been in use for over a decade with no specific problems
blamed on this area. So lets just abbreviate it into what it evaluates to.

Gitlab: #2269

2 years agosfdpgen check_real_array_size: abbreviate no-op 'MAX' call
Matthew Fernandez [Sun, 28 Aug 2022 20:11:26 +0000 (13:11 -0700)]
sfdpgen check_real_array_size: abbreviate no-op 'MAX' call

1b847b5abf50d2ab0701523b90a20306d0ee5528 seems to have incorrectly assumed
multiplication has a higher precedence than casts. In reality, it is the
opposite, meaning the first parameter to this `MAX` call was always 0. So the
entire expression would evaluate to 10. Empirically this seems to have been fine
since this code has been in use for over a decade with no specific problems
blamed on this area. So lets just abbreviate it into what it evaluates to.

Gitlab: #2269

2 years agosfdpgen beautify_leaves: use cgraph wrappers for allocation
Matthew Fernandez [Sun, 28 Aug 2022 20:09:30 +0000 (13:09 -0700)]
sfdpgen beautify_leaves: use cgraph wrappers for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosfdpgen oned_optimizer_new: use cgraph wrapper for allocation
Matthew Fernandez [Sun, 28 Aug 2022 19:54:16 +0000 (12:54 -0700)]
sfdpgen oned_optimizer_new: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosfdpgen spring_electrical_control: remove 'multilevel_coarsen_mode'
Matthew Fernandez [Sun, 28 Aug 2022 19:52:10 +0000 (12:52 -0700)]
sfdpgen spring_electrical_control: remove 'multilevel_coarsen_mode'

This was never set to anything other than `COARSEN_MODE_FORCEFUL`.

2 years agosfdpgen spring_electrical_control: remove 'multilevel_coarsen_scheme'
Matthew Fernandez [Sun, 28 Aug 2022 19:39:55 +0000 (12:39 -0700)]
sfdpgen spring_electrical_control: remove 'multilevel_coarsen_scheme'

This was never set to anything other than
`COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_SUPERNODES_FIRST`.

2 years agosfdpgen spring_electrical_control_new: use cgraph wrapper for allocation
Matthew Fernandez [Sun, 28 Aug 2022 19:33:02 +0000 (12:33 -0700)]
sfdpgen spring_electrical_control_new: use cgraph wrapper for allocation

The lib/cgraph/alloc.h wrappers are similar to the older lib/common/memory.h
wrappers except (1) they are header-only and (2) they live in a directory
(cgraph) that is at the root of the dependency tree. The long term plan is to
replace all use of lib/common/memory.h with lib/cgraph/alloc.h.

2 years agosfdpgen beautify_leaves: swap a boolean array for a bit array
Matthew Fernandez [Sun, 28 Aug 2022 19:25:23 +0000 (12:25 -0700)]
sfdpgen beautify_leaves: swap a boolean array for a bit array

This reduces memory pressure by using 1-bit per element instead of 1-byte per
element. Unfortunately this introduces 4 -Wsign-conversion warnings due to
indexing in this function being done with signed variables. But the change still
seems like an improvement on the existing code.

2 years agoMerge branch 'minor-cleanup-of-svg-analyzer' into 'main'
Magnus Jacobsson [Tue, 30 Aug 2022 21:12:13 +0000 (21:12 +0000)]
Merge branch 'minor-cleanup-of-svg-analyzer' into 'main'

Minor cleanup of the SVG analyzer

See merge request graphviz/graphviz!2810

2 years agotests: SVGAnalyzer: use fmt::format instead of string concatenation
Magnus Jacobsson [Wed, 24 Aug 2022 11:00:56 +0000 (13:00 +0200)]
tests: SVGAnalyzer: use fmt::format instead of string concatenation

2 years agotests: SVGAnalyzer: correct comment
Magnus Jacobsson [Wed, 24 Aug 2022 11:00:30 +0000 (13:00 +0200)]
tests: SVGAnalyzer: correct comment

2 years agotests: SVGAnalyzer: avoid string copy by taking reference instead
Magnus Jacobsson [Wed, 24 Aug 2022 11:00:07 +0000 (13:00 +0200)]
tests: SVGAnalyzer: avoid string copy by taking reference instead

2 years agotests: test_svg_analyzer: remove useless string copy
Magnus Jacobsson [Wed, 17 Aug 2022 18:30:26 +0000 (20:30 +0200)]
tests: test_svg_analyzer: remove useless string copy

Despite its name, 'shape_char_ptr' was already a std::string.

2 years agotests: test_svg_analyzer: Update test description
Magnus Jacobsson [Sat, 20 Aug 2022 21:11:10 +0000 (23:11 +0200)]
tests: test_svg_analyzer: Update test description

2 years agotests: test_svg_analyzer: remove useless include of graphviz_graph.h
Magnus Jacobsson [Fri, 26 Aug 2022 11:19:08 +0000 (13:19 +0200)]
tests: test_svg_analyzer: remove useless include of graphviz_graph.h

2 years agotests: rename variables '.*svgAnalyzer' to '.*svg_analyzer'
Magnus Jacobsson [Sat, 20 Aug 2022 21:16:06 +0000 (23:16 +0200)]
tests: rename variables '.*svgAnalyzer' to '.*svg_analyzer'

Almost no other variables use camel case.

2 years agotests: SVGAnalyzer: add some comments
Magnus Jacobsson [Tue, 23 Aug 2022 15:18:17 +0000 (17:18 +0200)]
tests: SVGAnalyzer: add some comments

2 years agotests: SVGAnalyzer: use fmt::format instead of string concatenation
Magnus Jacobsson [Tue, 23 Aug 2022 15:20:50 +0000 (17:20 +0200)]
tests: SVGAnalyzer: use fmt::format instead of string concatenation

2 years agotests: test_rankdir: remove useless generation of copy
Magnus Jacobsson [Tue, 23 Aug 2022 19:09:44 +0000 (21:09 +0200)]
tests: test_rankdir: remove useless generation of copy

The generator expression will not outlive the scope of
'node_shapes_without_svg_shape' or 'all_node_shapes' which both live
in the global scope, so copying is unnecessary.

For details, see
https://github.com/catchorg/Catch2/blob/devel/docs/generators.md#provided-generators.

2 years agoMerge branch 'smattr/cc0c1b4c-ccdf-48a9-adc6-8c301067068a' into 'main'
Matthew Fernandez [Tue, 30 Aug 2022 15:51:20 +0000 (15:51 +0000)]
Merge branch 'smattr/cc0c1b4c-ccdf-48a9-adc6-8c301067068a' into 'main'

gvpr: fix: wrap members needing cleanup in a struct and outline

Closes #1801

See merge request graphviz/graphviz!2817

2 years agogvpr: more tightly scope 'nextg'
Matthew Fernandez [Sun, 28 Aug 2022 03:18:07 +0000 (20:18 -0700)]
gvpr: more tightly scope 'nextg'

This squashes a -Wclobbered compiler warning. Though, as discussed in the prior
commit, I believe this to be a false positive.

As of this commit, Graphviz builds free of -Wclobbered warnings.

Gitlab: closes #1801

2 years agogvpr: fix: wrap members needing cleanup in a struct and outline
Matthew Fernandez [Sun, 28 Aug 2022 03:04:07 +0000 (20:04 -0700)]
gvpr: fix: wrap members needing cleanup in a struct and outline

When seeing this code, the compiler emitted numerous warnings like:

  gvpr.c: In function ‘gvpr’:
  gvpr.c:929:17: warning: variable ‘prog’ might be clobbered by
    ‘longjmp’ or ‘vfork’ [-Wclobbered]
       parse_prog *prog = 0;
                   ^~~~

What it is trying to tell us is that this code violates the assumptions of
`setjmp`/`longjmp`. Referencing any non-volatile stack-allocated variable after
a `longjmp` is undefined behavior.¹

This change extracts all the members that need to be referenced after `longjmp`
into a wrapper function. This basically puts a function call boundary in a place
such that the code no longer violates assumptions of the C standard. It is a
little awkward that we have to do this by hand, as the transformation is
mechanical and the compiler technically has enough information to do this for
us. But `setjmp`/`longjmp` come from the old world and are low level mechanisms.
If the compiler sees a call to them, it assumes you are doing something unusual
and want to do it exactly as you wrote.

While making this adjustment, some white space is adjusted and some coercion to
boolean is changed to explicit comparisons against `NULL`.

I do not understand why, but after this change the compiler still believes
`nextg` can be clobbered by a `longjmp`. While this is true, `nextg` is not used
after `longjmp`-ing back to `gvpr_core`, so I do not know why the compiler
thinks it needs to warn us about this.

Gitlab: #1801

¹ This restriction stems from how `setjmp`/`longjmp` work on certain platforms.
  If a variable is live in a register instead of on the stack, it is not
  guaranteed to be restored during a `longjmp`. Hence why the value of such
  variables is undefined after a `longjmp`.

2 years agoMerge branch 'smattr/bdd2e8b6-9a48-4e33-815d-2c049a7ca7f2' into 'main'
Matthew Fernandez [Tue, 30 Aug 2022 14:52:56 +0000 (14:52 +0000)]
Merge branch 'smattr/bdd2e8b6-9a48-4e33-815d-2c049a7ca7f2' into 'main'

cmd/tools: use cgraph wrappers for allocation

See merge request graphviz/graphviz!2818

2 years agogml2gv gmlparse: fix unchecked allocation failures
Matthew Fernandez [Sun, 28 Aug 2022 16:10:32 +0000 (09:10 -0700)]
gml2gv gmlparse: fix unchecked allocation failures

2 years agogml2gv gmlscan: fix unchecked allocation failures
Matthew Fernandez [Sun, 28 Aug 2022 16:09:10 +0000 (09:09 -0700)]
gml2gv gmlscan: fix unchecked allocation failures