]> granicus.if.org Git - graphviz/log
graphviz
2 years agoMerge branch 'smattr/6ED69563-0D4E-4B8B-BFC5-F55A459A529B' into 'main'
Matthew Fernandez [Sat, 5 Mar 2022 20:58:09 +0000 (20:58 +0000)]
Merge branch 'smattr/6ED69563-0D4E-4B8B-BFC5-F55A459A529B' into 'main'

Pango plugin: fix: do not judge empty lines as failing during text layout

Closes #2179

See merge request graphviz/graphviz!2484

2 years agoPango plugin: fix: do not judge empty lines as failing during text layout
Matthew Fernandez [Mon, 28 Feb 2022 02:49:26 +0000 (18:49 -0800)]
Pango plugin: fix: do not judge empty lines as failing during text layout

Text layout plugins are expected to return failure as `false` from their
`textlayout` function. The Pango plugin considered failure to be anything that
resulted in a horizontal layout width of 0. However, this is not a failure in
the case where the text being laid out is the empty string; its horizontal width
is expected to be 0.

The effect of this was that HTML-like strings like `<<br/>1>` were judged to
fail during text layout and a (redundant) estimation of their text width was
performed. This seems to have been a latent bug present since commit
ad82ef8613b0731806b81f9c0047d0cbf6745470 (~July 2007). This recently became more
visible due to commit 7aa0dcc03ea20b544b2463d97fe4a78af699589c that introduced
warnings during text width estimation if a fallback metric needed to be used.
Users were now presented with “Warning: no hard-coded metrics” when using fonts
that Pango knew of and should not have needed estimation in the first place.

This fix makes the Pango plugin consider 0 width for the layout of an empty
string to be successful. To be clear, this commit is both a functional fix and a
performance improvement.

Gitlab: fixes #2179

2 years agopango_textlayout: [nfc] remove an unnecessary 'void*' cast
Matthew Fernandez [Mon, 28 Feb 2022 02:48:29 +0000 (18:48 -0800)]
pango_textlayout: [nfc] remove an unnecessary 'void*' cast

2 years agogvc: [nfc] remove unnecessary 'gvplugin_installed_t.features' casts
Matthew Fernandez [Mon, 28 Feb 2022 02:39:55 +0000 (18:39 -0800)]
gvc: [nfc] remove unnecessary 'gvplugin_installed_t.features' casts

2 years agogvc: [nfc] remove unnecessary 'gvplugin_installed_t.engine' casts
Matthew Fernandez [Mon, 28 Feb 2022 02:37:59 +0000 (18:37 -0800)]
gvc: [nfc] remove unnecessary 'gvplugin_installed_t.engine' casts

2 years agotests: introduce a further variant of #2179
Matthew Fernandez [Mon, 28 Feb 2022 02:30:35 +0000 (18:30 -0800)]
tests: introduce a further variant of #2179

When working on a fix for this issue, we want to ensure we do not also affect
the case that currently (correctly) does not warn.

2 years agoMerge branch 'smattr/48F581D5-5BD5-4555-8460-C8B620B657CD-2' into 'main'
Matthew Fernandez [Sat, 5 Mar 2022 19:12:26 +0000 (19:12 +0000)]
Merge branch 'smattr/48F581D5-5BD5-4555-8460-C8B620B657CD-2' into 'main'

enable 'png:gd' format on macOS with CMake

See merge request graphviz/graphviz!2483

2 years agoCMake: enable libgd support on macOS when possible smattr/48F581D5-5BD5-4555-8460-C8B620B657CD-2
Matthew Fernandez [Sat, 26 Feb 2022 22:38:01 +0000 (14:38 -0800)]
CMake: enable libgd support on macOS when possible

As discussed in the comment in this commit, we hard code the options the
Homebrew libgd package is built with.¹ It seems not possible to build a libgd
without GIF support, so perhaps the `HAVE_GD_GIF` logic in the Graphviz code
base could be simplified in future.

Gitlab: #1786

¹ https://github.com/Homebrew/homebrew-core/blob/1a7c405f0e4da91c378d1ebb73ee0d90b2775d32/Formula/gd.rb#L27-L48

2 years agoCMake: fix: link against pathplan when building GD plugin
Matthew Fernandez [Wed, 16 Feb 2022 21:00:10 +0000 (08:00 +1100)]
CMake: fix: link against pathplan when building GD plugin

This replicates something from the Autotools build system that was missing in
the CMake build system. The CMake build was not failing because the pathplan
dependency is only required when VRML support is enabled, which an upcoming
commit will add.

In contrast to the Autotools build system, this adds pathplan for all platforms,
not only Windows. Empirically it seems necessary on at least macOS and Windows
and it does no harm on Linux.

Gitlab: related to #1786

2 years agoCMake: only use 'gdlib-config' if libgd is found
Matthew Fernandez [Sat, 26 Feb 2022 22:25:28 +0000 (14:25 -0800)]
CMake: only use 'gdlib-config' if libgd is found

This is mostly just over-cautiousness to not accidentally define variables like
`HAVE_GD_PNG` if we not have libgd. But it will also ease some upcoming
macOS-specific changes.

Gitlab: #1786

2 years agoMerge branch 'smattr/A7432BFC-580E-4549-AF2D-264543852168' into 'main'
Matthew Fernandez [Sat, 5 Mar 2022 16:09:46 +0000 (16:09 +0000)]
Merge branch 'smattr/A7432BFC-580E-4549-AF2D-264543852168' into 'main'

CI: skip package uploading and deployment steps on non-release revisions

Closes #2139

See merge request graphviz/graphviz!2481

2 years agoCI: skip package uploading and deployment steps on non-release revisions
Matthew Fernandez [Sat, 26 Feb 2022 21:30:41 +0000 (13:30 -0800)]
CI: skip package uploading and deployment steps on non-release revisions

Traditionally CI has uploaded release artifacts and packaged a “release” for
every single commit on the main branch. These inter-release packages were
intended for testing and internal deployment. As far as we aware these are no
longer used; all Graphviz developers build from source and do not rely on
Gitlab’s generic package repository.¹

This change rearranges deployment steps to skip uploading artifacts and
packaging if the current commit is not a proper release. This should slightly
accelerate CI and reduce Graphviz storage requirements, which are currently at
>800GB on Gitlab.

Gitlab: closes #2139

¹ https://gitlab.com/graphviz/graphviz/-/packages

2 years agoMerge branch 'smattr/876f5463-c9a4-40ef-b868-bd113e6a01e1'
Matthew Fernandez [Sat, 5 Mar 2022 04:29:11 +0000 (20:29 -0800)]
Merge branch 'smattr/876f5463-c9a4-40ef-b868-bd113e6a01e1'

2 years agofix gvpr corruption of dynamically allocated arguments to user-defined functions
Matthew Fernandez [Sat, 26 Feb 2022 20:01:24 +0000 (12:01 -0800)]
fix gvpr corruption of dynamically allocated arguments to user-defined functions

Gvpr programs can define their own functions which can then be called within the
same program:

  void foo(string s) {
    print(s);
  }

  foo("bar");

This mostly worked. However in some cases the gvpr implementation was not
extending the lifetime of the memory allocated to store the passed in value
long enough. Enumerating the cases in which this occurred is complicated because
whether this (used-after-free) memory retained its intended content depended on
(1) the complexity of the expression of the passed in value and (2) what the
target function (`foo` in the above example) was itself doing. As a result, it
seems users mostly did not observe the problem (program/output corruption)
unless they were writing non-trivial functions and calling them with non-trivial
expressions.

Commit 8da53964edec8a665c3996d483df243eb150c2c4 compounded the above problem by
replacing the underlying allocator. While both before and after states use an
arena allocator,¹ the allocator after this change eagerly returns memory to the
backing system allocator (`malloc`) on `vmclear` while the allocator before this
change retained it within its own internal pool. The system allocator is used
much more pervasively in the Graphviz code base than the more tightly scoped
lib/vmalloc allocator, and it also typically does much more aggressive reuse of
recently-freed memory under the assumption that this is more likely to still be
cache-resident and thus faster to access. The net effect of this was that the
chance of the memory in question being reused and overwritten significantly
increased, making a number of latent cases of the problem described above now
user-visible.

The fix in this commit removes the freeing of expressions that are still
potentially in use. The contents of a subexpression in the above described
scenarios now remains intact up to the point it is accessed when evaluating its
parent containing expression.

The astute reader who has followed everything up to now may notice that the
subexpressions’ contents are actually maintained _beyond_ the point of
evaluation of the parent expression, and may be wondering, “didn’t you just turn
a use-after-free into a memory leak?” Unfortunately the answer is yes. However,
it is unclear how to determine when it is safe to free a subexpression without
introducing a more complex concept of call stacks and arbitrarily nested
expressions to lib/expr. Thus given the choice right now between use-after-free
or leaking memory, we are choosing to leak memory. Hopefully this can be
revisited in future.

Gitlab: fixes #2185

¹ https://en.wikipedia.org/wiki/Region-based_memory_management

2 years agoMerge branch 'fix-warnings2' into 'main'
Matthew Fernandez [Tue, 1 Mar 2022 16:25:26 +0000 (16:25 +0000)]
Merge branch 'fix-warnings2' into 'main'

fix or avoid some warnings

See merge request graphviz/graphviz!2450

2 years agoavoid unused args in free_clust
Costa Shulyupin [Sun, 20 Feb 2022 05:53:27 +0000 (07:53 +0200)]
avoid unused args in free_clust

the function must be compatible with specified signature

2 years agoavoid unused args in callbacks freeItem
Costa Shulyupin [Sun, 20 Feb 2022 05:53:05 +0000 (07:53 +0200)]
avoid unused args in callbacks freeItem

the function must be compatible with specified signature

2 years agoavoid unused args in callbacks newItem
Costa Shulyupin [Wed, 16 Feb 2022 11:04:29 +0000 (13:04 +0200)]
avoid unused args in callbacks newItem

the function must be compatible with specified signature

2 years agoremove unused argument in getintrsxi
Costa Shulyupin [Wed, 16 Feb 2022 11:06:08 +0000 (13:06 +0200)]
remove unused argument in getintrsxi

2 years agoavoid unused args in ps_image_free
Costa Shulyupin [Wed, 16 Feb 2022 10:57:08 +0000 (12:57 +0200)]
avoid unused args in ps_image_free

the function must have signature, compatible
typedef void (*Dtfree_f)(Dt_t*,void*,Dtdisc_t*);

2 years agoavoid unused args in free_string_entry
Costa Shulyupin [Wed, 16 Feb 2022 10:50:50 +0000 (12:50 +0200)]
avoid unused args in free_string_entry

the function must have signature, compatible
typedef void (*Dtfree_f)(Dt_t*,void*,Dtdisc_t*);

2 years agoMerge branch 'smattr/BDEE2E31-8B1D-4272-9616-3F34D5730490' into 'main'
Matthew Fernandez [Mon, 28 Feb 2022 01:20:04 +0000 (01:20 +0000)]
Merge branch 'smattr/BDEE2E31-8B1D-4272-9616-3F34D5730490' into 'main'

fix some clang-format; add enforcement

See merge request graphviz/graphviz!2477

2 years agoCI: add a clang-format checking job
Matthew Fernandez [Tue, 22 Feb 2022 02:05:22 +0000 (18:05 -0800)]
CI: add a clang-format checking job

2 years agogvc++: [nfc] reorder GVLayout.h includes for clang-format
Matthew Fernandez [Sat, 26 Feb 2022 05:58:20 +0000 (21:58 -0800)]
gvc++: [nfc] reorder GVLayout.h includes for clang-format

2 years agotests: [nfc] reorder 2057 test code includes for clang-format
Matthew Fernandez [Fri, 25 Feb 2022 01:20:08 +0000 (17:20 -0800)]
tests: [nfc] reorder 2057 test code includes for clang-format

2 years agotests: [nfc] reflow 1910 test code
Matthew Fernandez [Thu, 24 Feb 2022 16:23:57 +0000 (08:23 -0800)]
tests: [nfc] reflow 1910 test code

2 years agocgraph: [nfc] reflow test_sprint.h
Matthew Fernandez [Thu, 24 Feb 2022 05:43:54 +0000 (21:43 -0800)]
cgraph: [nfc] reflow test_sprint.h

2 years agocgraph: [nfc] reflow test_itos.c
Matthew Fernandez [Thu, 24 Feb 2022 05:29:50 +0000 (21:29 -0800)]
cgraph: [nfc] reflow test_itos.c

2 years agocgraph: [nfc] reflow strcasecmp.h
Matthew Fernandez [Thu, 24 Feb 2022 05:17:44 +0000 (21:17 -0800)]
cgraph: [nfc] reflow strcasecmp.h

This was intended to be compliant when I wrote it, but apparently I erred.

2 years agocgraph: [nfc] reflow bitarray.h
Matthew Fernandez [Thu, 24 Feb 2022 05:05:21 +0000 (21:05 -0800)]
cgraph: [nfc] reflow bitarray.h

Some non-compliant formatting crept in.

2 years agoMerge branch 'smattr/0ee3a8de-0467-49e2-bfeb-9bd70a4bc90a' into 'main'
Matthew Fernandez [Mon, 28 Feb 2022 00:06:30 +0000 (00:06 +0000)]
Merge branch 'smattr/0ee3a8de-0467-49e2-bfeb-9bd70a4bc90a' into 'main'

expr: [nfc] some clean up

See merge request graphviz/graphviz!2480

2 years agoexpr exeval: [nfc] remove unnecessary parens, dereference of function pointers
Matthew Fernandez [Sat, 26 Feb 2022 19:20:56 +0000 (11:20 -0800)]
expr exeval: [nfc] remove unnecessary parens, dereference of function pointers

The C compiler knows how to dereference and call through a function pointer
without needing this manual instruction.

2 years agoexpr: [nfc] remove unnecessary parens and dereference of 'convertf'
Matthew Fernandez [Sat, 26 Feb 2022 19:18:53 +0000 (11:18 -0800)]
expr: [nfc] remove unnecessary parens and dereference of 'convertf'

The C compiler knows how to dereference and call through a function pointer
without needing this manual instruction.

2 years agoexpr: [nfc] remove unnecessary parens and dereference of 'binaryf'
Matthew Fernandez [Sat, 26 Feb 2022 19:10:04 +0000 (11:10 -0800)]
expr: [nfc] remove unnecessary parens and dereference of 'binaryf'

The C compiler knows how to dereference and call through a function pointer
without needing this manual instruction.

2 years agoexpr: [nfc] remove unnecessary parens and dereference of 'matchf'
Matthew Fernandez [Sat, 26 Feb 2022 19:08:03 +0000 (11:08 -0800)]
expr: [nfc] remove unnecessary parens and dereference of 'matchf'

The C compiler knows how to dereference and call through a function pointer
without needing this manual instruction.

2 years agoexpr: [nfc] remove unnecessary parens and dereference of 'exitf'
Matthew Fernandez [Sat, 26 Feb 2022 19:03:00 +0000 (11:03 -0800)]
expr: [nfc] remove unnecessary parens and dereference of 'exitf'

The C compiler knows how to dereference and call through a function pointer
without needing this manual instruction.

2 years agoexpr: [nfc] remove unnecessary parens and dereference of 'setf'
Matthew Fernandez [Sat, 26 Feb 2022 19:01:57 +0000 (11:01 -0800)]
expr: [nfc] remove unnecessary parens and dereference of 'setf'

The C compiler knows how to dereference and call through a function pointer
without needing this manual instruction.

2 years agoexpr: [nfc] remove unnecessary parens in 'eval(…).string' expressions
Matthew Fernandez [Sat, 26 Feb 2022 19:00:08 +0000 (11:00 -0800)]
expr: [nfc] remove unnecessary parens in 'eval(…).string' expressions

2 years agoexpr: [nfc] remove unorthodox spacing around member accesses
Matthew Fernandez [Sat, 26 Feb 2022 18:57:15 +0000 (10:57 -0800)]
expr: [nfc] remove unorthodox spacing around member accesses

2 years agoexpr: [nfc] remove unnecessary parens and dereference of 'getf'
Matthew Fernandez [Sat, 26 Feb 2022 18:56:04 +0000 (10:56 -0800)]
expr: [nfc] remove unnecessary parens and dereference of 'getf'

The C compiler knows how to dereference and call through a function pointer
without needing this manual instruction.

2 years agoMerge branch 'smattr/1197F5FA-7D54-45A7-961E-EC4BB50BCFE2' into 'main'
Matthew Fernandez [Sun, 27 Feb 2022 22:22:57 +0000 (22:22 +0000)]
Merge branch 'smattr/1197F5FA-7D54-45A7-961E-EC4BB50BCFE2' into 'main'

cgraph: fix some minor bugs

See merge request graphviz/graphviz!2475

2 years agocgraph: fix: handle allocation failures in 'agcanon' and friends
Matthew Fernandez [Fri, 25 Feb 2022 16:18:17 +0000 (08:18 -0800)]
cgraph: fix: handle allocation failures in 'agcanon' and friends

There are a number of cgraph API functions that use an internally managed buffer
to save the caller from having to allocate space themselves. Failure to expand
this buffer was being silently ignored, resulting in messy crashes when memory
was exhausted. These failures are now checked for and `agcanon` and `agcanonStr`
return `NULL` on allocation failure. `agwrite` returns `EOF` on allocation
failure.

2 years agoagwrite: fix: ignore out of range 'linelength'
Matthew Fernandez [Fri, 25 Feb 2022 16:09:36 +0000 (08:09 -0800)]
agwrite: fix: ignore out of range 'linelength'

This code was accepting large negative numbers and then converting them to
positive numbers that were applied as the line length limit. This seems clearly
unintended. This rephrasing now ignores any out of range value set for
`linelength`.

2 years agoagwrite: [nfc] separate assignment from conditional
Matthew Fernandez [Fri, 25 Feb 2022 15:59:14 +0000 (07:59 -0800)]
agwrite: [nfc] separate assignment from conditional

Squashes an MSVC “warning C4706: assignment within conditional expression”
warning.

2 years agoMerge branch 'smattr/D7055808-9A1D-4DCD-90A7-E0484002CF03' into 'main'
Matthew Fernandez [Sat, 26 Feb 2022 18:24:25 +0000 (18:24 +0000)]
Merge branch 'smattr/D7055808-9A1D-4DCD-90A7-E0484002CF03' into 'main'

Start 3.0 development series

See merge request graphviz/graphviz!2478

2 years agoStart 3.0 development series
Matthew Fernandez [Sat, 26 Feb 2022 16:19:01 +0000 (08:19 -0800)]
Start 3.0 development series

2 years agoMerge branch 'smattr/5DA70CF4-980D-4F81-AEF7-058695CA2E40' into 'main' 3.0.0
Matthew Fernandez [Sat, 26 Feb 2022 17:11:28 +0000 (17:11 +0000)]
Merge branch 'smattr/5DA70CF4-980D-4F81-AEF7-058695CA2E40' into 'main'

Stable Release 3.0.0

See merge request graphviz/graphviz!2461

2 years agoStable Release 3.0.0
Matthew Fernandez [Sun, 20 Feb 2022 00:13:41 +0000 (16:13 -0800)]
Stable Release 3.0.0

2 years agoMerge branch 'smattr/51EA14FF-2973-4E74-9B56-9E7681B60DBB' into 'main'
Matthew Fernandez [Sat, 26 Feb 2022 07:05:14 +0000 (07:05 +0000)]
Merge branch 'smattr/51EA14FF-2973-4E74-9B56-9E7681B60DBB' into 'main'

add a test case for #191

See merge request graphviz/graphviz!2474

2 years agoadd a test case for #191
Matthew Fernandez [Fri, 25 Feb 2022 04:09:14 +0000 (20:09 -0800)]
add a test case for #191

2 years agoMerge branch 'smattr/6BECC6DB-0939-436D-839C-A2159C2C25A3' into 'main'
Matthew Fernandez [Sat, 26 Feb 2022 05:55:17 +0000 (05:55 +0000)]
Merge branch 'smattr/6BECC6DB-0939-436D-839C-A2159C2C25A3' into 'main'

agnameof: [nfc] separate assignments from conditionals

See merge request graphviz/graphviz!2473

2 years agoagnameof: [nfc] separate assignments from conditionals
Matthew Fernandez [Fri, 25 Feb 2022 04:56:39 +0000 (20:56 -0800)]
agnameof: [nfc] separate assignments from conditionals

Squashes a number of MSVC “C4706: assignment within conditional expression”
warnings.

2 years agoMerge branch 'fix-warnings' into 'main'
Matthew Fernandez [Fri, 25 Feb 2022 02:07:14 +0000 (02:07 +0000)]
Merge branch 'fix-warnings' into 'main'

fix freeTreeList

See merge request graphviz/graphviz!2449

2 years agofix freeTreeList
Costa Shulyupin [Fri, 25 Feb 2022 02:07:14 +0000 (02:07 +0000)]
fix freeTreeList

2 years agoMerge branch 'smattr/0A79D579-4787-4FF1-AC4B-BE5FFA581FE8' into 'main'
Matthew Fernandez [Thu, 24 Feb 2022 18:20:45 +0000 (18:20 +0000)]
Merge branch 'smattr/0A79D579-4787-4FF1-AC4B-BE5FFA581FE8' into 'main'

cgraph: [nfc] remove unused return value from 'agxbmore'

See merge request graphviz/graphviz!2471

2 years agocgraph: [nfc] remove unused return value from 'agxbmore'
Matthew Fernandez [Wed, 23 Feb 2022 07:57:09 +0000 (23:57 -0800)]
cgraph: [nfc] remove unused return value from 'agxbmore'

2 years agoMerge branch 'smattr/C7E834B5-E093-4BCD-B39E-39DDFA0CE179' into 'main'
Matthew Fernandez [Thu, 24 Feb 2022 08:17:36 +0000 (08:17 +0000)]
Merge branch 'smattr/C7E834B5-E093-4BCD-B39E-39DDFA0CE179' into 'main'

lib/pathplan/shortest.c: [nfc] some clean up and warning squashing

See merge request graphviz/graphviz!2469

2 years agolib/pathplan/shortest.c: [nfc] separate assignments from conditionals
Matthew Fernandez [Tue, 22 Feb 2022 16:17:37 +0000 (08:17 -0800)]
lib/pathplan/shortest.c: [nfc] separate assignments from conditionals

Squashes a number of MSVC “C4706: assignment within conditional expression”
warnings.

2 years agopathplan connecttris: [nfc] remove unnecessary use of the comma operator
Matthew Fernandez [Tue, 22 Feb 2022 16:14:28 +0000 (08:14 -0800)]
pathplan connecttris: [nfc] remove unnecessary use of the comma operator

2 years agolib/pathplan/shortest.c: [nfc] reflow some code for readability
Matthew Fernandez [Tue, 22 Feb 2022 16:14:12 +0000 (08:14 -0800)]
lib/pathplan/shortest.c: [nfc] reflow some code for readability

2 years agolib/pathplan/shortest.c: [nfc] remove unnecessary parens
Matthew Fernandez [Tue, 22 Feb 2022 16:09:33 +0000 (08:09 -0800)]
lib/pathplan/shortest.c: [nfc] remove unnecessary parens

2 years agoMerge branch 'smattr/9662124d-546f-46ec-86b2-59fdac3d6e8a' into 'main'
Matthew Fernandez [Thu, 24 Feb 2022 07:08:25 +0000 (07:08 +0000)]
Merge branch 'smattr/9662124d-546f-46ec-86b2-59fdac3d6e8a' into 'main'

various test cases for #2185

See merge request graphviz/graphviz!2463

2 years agovarious test cases for #2185
Matthew Fernandez [Sun, 20 Feb 2022 03:53:59 +0000 (19:53 -0800)]
various test cases for #2185

2 years agoMerge branch 'graphml2gv' into 'main'
Mark Hansen [Wed, 23 Feb 2022 09:40:29 +0000 (09:40 +0000)]
Merge branch 'graphml2gv' into 'main'

tools: remove unused arguments

See merge request graphviz/graphviz!2470

2 years agoMerge branch 'smattr/139c540a-38bd-48cf-806c-10652625b583' into 'main'
Matthew Fernandez [Wed, 23 Feb 2022 09:04:00 +0000 (09:04 +0000)]
Merge branch 'smattr/139c540a-38bd-48cf-806c-10652625b583' into 'main'

add a test case for #2193

See merge request graphviz/graphviz!2462

2 years agoadd a test case for #2193
Matthew Fernandez [Sun, 20 Feb 2022 00:47:08 +0000 (16:47 -0800)]
add a test case for #2193

2 years agotests: recognize 'canon' as a textual format
Matthew Fernandez [Sun, 20 Feb 2022 00:37:25 +0000 (16:37 -0800)]
tests: recognize 'canon' as a textual format

Gitlab: related to #2193

2 years agoMerge branch 'smattr/39320B11-3CE5-4D7B-9C8E-17152F849788' into 'main'
Matthew Fernandez [Wed, 23 Feb 2022 05:54:32 +0000 (05:54 +0000)]
Merge branch 'smattr/39320B11-3CE5-4D7B-9C8E-17152F849788' into 'main'

cdt: [nfc] some clean up

See merge request graphviz/graphviz!2466

2 years agocdt: [nfc] remove unnecessary dereference and parens on function pointers
Matthew Fernandez [Mon, 21 Feb 2022 00:02:03 +0000 (16:02 -0800)]
cdt: [nfc] remove unnecessary dereference and parens on function pointers

The compiler knows how to call through a function pointer without requiring the
programmer to manually dereference it.

2 years agocdt: [nfc] remove some unnecessary casts of 'void*' during assignment
Matthew Fernandez [Sun, 20 Feb 2022 23:42:20 +0000 (15:42 -0800)]
cdt: [nfc] remove some unnecessary casts of 'void*' during assignment

2 years agocdt: [nfc] remove an unnecessary cast of an argument to '_DTKEY'
Matthew Fernandez [Sun, 20 Feb 2022 23:34:42 +0000 (15:34 -0800)]
cdt: [nfc] remove an unnecessary cast of an argument to '_DTKEY'

2 years agocdt: [nfc] remove an unnecessary cast of the return value of '_DTOBJ'
Matthew Fernandez [Sun, 20 Feb 2022 23:33:48 +0000 (15:33 -0800)]
cdt: [nfc] remove an unnecessary cast of the return value of '_DTOBJ'

2 years agocdt: [nfc] remove unnecessary casts of arguments to 'searchf'
Matthew Fernandez [Sun, 20 Feb 2022 23:30:08 +0000 (15:30 -0800)]
cdt: [nfc] remove unnecessary casts of arguments to 'searchf'

2 years agocdt: [nfc] remove unnecessary casts of arguments to 'eventf'
Matthew Fernandez [Sun, 20 Feb 2022 23:27:53 +0000 (15:27 -0800)]
cdt: [nfc] remove unnecessary casts of arguments to 'eventf'

2 years agocdt: [nfc] remove unnecessary casts of the return value of 'memoryf'
Matthew Fernandez [Sun, 20 Feb 2022 23:25:43 +0000 (15:25 -0800)]
cdt: [nfc] remove unnecessary casts of the return value of 'memoryf'

2 years agocdt: [nfc] remove unnecessary casts of the arguments to 'memoryf'
Matthew Fernandez [Sun, 20 Feb 2022 23:25:03 +0000 (15:25 -0800)]
cdt: [nfc] remove unnecessary casts of the arguments to 'memoryf'

2 years agocdt dtvsearch: [nfc] squash unused variable warnings from MSVC
Matthew Fernandez [Sun, 20 Feb 2022 23:12:25 +0000 (15:12 -0800)]
cdt dtvsearch: [nfc] squash unused variable warnings from MSVC

2 years agoMerge branch 'smattr/864EBF21-0976-4521-B6B5-7C21A337FD00' into 'main'
Matthew Fernandez [Wed, 23 Feb 2022 04:33:55 +0000 (04:33 +0000)]
Merge branch 'smattr/864EBF21-0976-4521-B6B5-7C21A337FD00' into 'main'

Windows: remove 'sed' as a setup build utility

See merge request graphviz/graphviz!2465

2 years agotools: remove unused argument in setGlobalEdgeAttr
Costa Shulyupin [Wed, 23 Feb 2022 04:12:51 +0000 (06:12 +0200)]
tools: remove unused argument in setGlobalEdgeAttr

fix warning:
cmd/tools/graphml2gv.c: In function ‘setGlobalEdgeAttr’:
cmd/tools/graphml2gv.c:348:71: warning: unused parameter ‘ud’ [-Wunused-parameter]
  348 | setGlobalEdgeAttr(Agraph_t * g, char *name, char *value, userdata_t * ud)
      |

2 years agotools: remove unused argument in setGlobalNodeAttr
Costa Shulyupin [Wed, 23 Feb 2022 04:11:41 +0000 (06:11 +0200)]
tools: remove unused argument in setGlobalNodeAttr

cmd/tools/graphml2gv.c: In function ‘setGlobalNodeAttr’:
cmd/tools/graphml2gv.c:298:71: warning: unused parameter ‘ud’ [-Wunused-parameter]
  298 | setGlobalNodeAttr(Agraph_t * g, char *name, char *value, userdata_t * ud)
      |                                                          ~~~~~~~~~~~~~^~

2 years agoWindows: remove 'sed' as a setup build utility
Matthew Fernandez [Sun, 20 Feb 2022 23:07:31 +0000 (15:07 -0800)]
Windows: remove 'sed' as a setup build utility

Gitlab: #2115

2 years agoWindows: remove usage of 'sed' in setup-build-utilities script
Matthew Fernandez [Sun, 20 Feb 2022 23:03:55 +0000 (15:03 -0800)]
Windows: remove usage of 'sed' in setup-build-utilities script

This results in `$PATH` potentially having duplicated trailing entries, but this
causes no harm and preventing it does not seem worth a `sed` dependency.

Gitlab: #2115

2 years agoMerge branch 'aglasterr' into 'main'
Matthew Fernandez [Wed, 23 Feb 2022 03:21:29 +0000 (03:21 +0000)]
Merge branch 'aglasterr' into 'main'

lib/cgraph: use return value of 'fread' in aglasterr

See merge request graphviz/graphviz!2468

2 years agolib/cgraph: use return value of 'fread' in aglasterr
Costa Shulyupin [Tue, 22 Feb 2022 18:58:05 +0000 (20:58 +0200)]
lib/cgraph: use return value of 'fread' in aglasterr

fix warning:
agerror.c: In function ‘aglasterr’:
agerror.c:49:5: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
   49 |     fread(buf, sizeof(char), len, agerrout);

2 years agoMerge branch 'fix' into 'main'
Matthew Fernandez [Wed, 23 Feb 2022 02:18:20 +0000 (02:18 +0000)]
Merge branch 'fix' into 'main'

refactor circularLayout

See merge request graphviz/graphviz!2467

2 years agorefactor circularLayout
Costa Shulyupin [Mon, 21 Feb 2022 20:12:01 +0000 (22:12 +0200)]
refactor circularLayout

cut function cleanup, eliminate warning:
./lib/circogen/circular.c: In function ‘cleanup’:
./lib/circogen/circular.c|56 col 50| warning: unused parameter ‘sp’ [-Wunused-parameter]
||    56 | static void cleanup(block_t * root, circ_state * sp)
||       |                                     ~~~~~~~~~~~~~^~

2 years agoMerge branch 'smattr/46A5B7F0-9139-42B6-90B3-E35965040565' into 'main'
Matthew Fernandez [Tue, 22 Feb 2022 17:20:12 +0000 (17:20 +0000)]
Merge branch 'smattr/46A5B7F0-9139-42B6-90B3-E35965040565' into 'main'

lib/common: [nfc] remove 'nnames' micro-optimization and 'nToName'

See merge request graphviz/graphviz!2453

2 years agolib/common: [nfc] replace 'nToName' with 'itos'
Matthew Fernandez [Wed, 16 Feb 2022 21:39:49 +0000 (08:39 +1100)]
lib/common: [nfc] replace 'nToName' with 'itos'

This code was attempting to avoid dynamic string construction with low numbered
IDs. This is unnecessary when using a modern compiler that understands functions
like `snprintf` as built-ins and can achieve better optimization without this
trick.

Apart from de-duplicating code, this has the effect of making this code thread
safe where it was not before.

2 years agoMerge branch 'fix-C++-API-not-usable-after-install' into 'main'
Magnus Jacobsson [Tue, 22 Feb 2022 08:05:34 +0000 (08:05 +0000)]
Merge branch 'fix-C++-API-not-usable-after-install' into 'main'

fix C++ API not usable after install

Closes #2196

See merge request graphviz/graphviz!2464

2 years agoadd a CHANGELOG entry for the C++ API not usable after install fix
Magnus Jacobsson [Sun, 20 Feb 2022 14:03:03 +0000 (15:03 +0100)]
add a CHANGELOG entry for the C++ API not usable after install fix

2 years agogvc++: include "AGraph.h" instead of <AGraph.h> in GVLayout.h
Magnus Jacobsson [Sun, 20 Feb 2022 10:10:04 +0000 (11:10 +0100)]
gvc++: include "AGraph.h" instead of <AGraph.h> in GVLayout.h

This makes it possible to use GVLayout.h from the install directory
without the need to specify both "include" and "include/graphviz" as
include directories to the compiler.

Fixes https://gitlab.com/graphviz/graphviz/-/issues/2196.

2 years agogvc++: include "gvc.h" instead of <gvc.h> in GVContext.h
Magnus Jacobsson [Sun, 20 Feb 2022 10:08:52 +0000 (11:08 +0100)]
gvc++: include "gvc.h" instead of <gvc.h> in GVContext.h

This makes it possible to use GVContext.h from the install directory
without the need to specify both "include" and "include/graphviz" as
include directories to the compiler.

Towards https://gitlab.com/graphviz/graphviz/-/issues/2196.

2 years agocgraph++: include "cgraph.h" instead of <cgraph.h> in AGraph.h
Magnus Jacobsson [Sun, 20 Feb 2022 10:03:43 +0000 (11:03 +0100)]
cgraph++: include "cgraph.h" instead of <cgraph.h> in AGraph.h

This makes it possible to use AGraph.h from the install directory
without the need to specify both "include" and "include/graphviz" as
include directories to the compiler.

Towards https://gitlab.com/graphviz/graphviz/-/issues/2196.

2 years agogvc++: include AGraph.h without the cgraph++ directory prefix in GVLayout.h
Magnus Jacobsson [Sun, 20 Feb 2022 09:35:39 +0000 (10:35 +0100)]
gvc++: include AGraph.h without the cgraph++ directory prefix in GVLayout.h

This makes it possible to use GVLayout.h from the install directory
where AGraph.h is not located under this prefix.

Towards https://gitlab.com/graphviz/graphviz/-/issues/2196.

2 years agogvc++: include gvc.h without the gvc directory prefix in GVContext.h
Magnus Jacobsson [Sun, 20 Feb 2022 09:34:33 +0000 (10:34 +0100)]
gvc++: include gvc.h without the gvc directory prefix in GVContext.h

This makes it possible to use GVContext.h from the install directory
where gvc.h is not located under this prefix.

Towards https://gitlab.com/graphviz/graphviz/-/issues/2196.

2 years agocgraph++: include cgraph.h without the cgraph directory prefix in AGraph.h
Magnus Jacobsson [Sun, 20 Feb 2022 09:33:45 +0000 (10:33 +0100)]
cgraph++: include cgraph.h without the cgraph directory prefix in AGraph.h

This makes it possible to use AGraph.h from the install directory
where cgraph.h is not located under this prefix.

Towards https://gitlab.com/graphviz/graphviz/-/issues/2196.

2 years agoMerge branch 'smattr/5E2D9BBC-3087-4FC2-8C95-929FC239F0CC' into 'main'
Matthew Fernandez [Mon, 21 Feb 2022 01:58:33 +0000 (01:58 +0000)]
Merge branch 'smattr/5E2D9BBC-3087-4FC2-8C95-929FC239F0CC' into 'main'

diffimg: handle allocation errors

See merge request graphviz/graphviz!2455

2 years agodiffimg: handle allocation errors
Matthew Fernandez [Sat, 19 Feb 2022 18:21:02 +0000 (10:21 -0800)]
diffimg: handle allocation errors

Previously these would be ignored resulting in crashes when allocations failed.

2 years agoMerge branch 'smattr/3ECB75F8-D9B2-4B09-9DD4-DCEF26761D98' into 'main'
Matthew Fernandez [Mon, 21 Feb 2022 00:40:45 +0000 (00:40 +0000)]
Merge branch 'smattr/3ECB75F8-D9B2-4B09-9DD4-DCEF26761D98' into 'main'

cgraph: [nfc] guard 'strcasecmp' definition to avoid duplication

See merge request graphviz/graphviz!2456

2 years agocgraph: [nfc] guard 'strcasecmp' definition to avoid duplication
Matthew Fernandez [Sat, 19 Feb 2022 17:59:06 +0000 (09:59 -0800)]
cgraph: [nfc] guard 'strcasecmp' definition to avoid duplication

When compiling with Microsoft Visual Studio 2019, the compiler emits:

  …\lib\cgraph\strcasecmp.h(12,64): warning C4211: nonstandard extension used:
    redefined extern to static

Investigation reveals libgd defines their own `strcasecmp` shim in gd.h:

  /* VS2012+ disable keyword macroizing unless _ALLOW_KEYWORD_MACROS is set
     We define inline, and strcasecmp if they're missing
  */
  #ifdef _MSC_VER
  #  define _ALLOW_KEYWORD_MACROS
  #  ifndef inline
  #    define inline __inline
  #  endif
  #  ifndef strcasecmp
  #    define strcasecmp _stricmp
  #  endif
  #endif

To avoid this warning, guard Graphviz’ shim so it is only used when the libgd
shim is not in use.

Note that this also explains why MSVC is able to compile diffimg.c despite the
Graphviz shim file not being included.