]> granicus.if.org Git - graphviz/log
graphviz
4 years agoMake the Windows pipeline stop on PowerShell cmdlet failure
Magnus Jacobsson [Fri, 14 Aug 2020 12:55:30 +0000 (14:55 +0200)]
Make the Windows pipeline stop on PowerShell cmdlet failure

Note that this doesn't affect failures from .exe programs (but that is
already handled by the GitLab Shared Windows Runner). See
https://stackoverflow.com/questions/9948517/how-to-stop-a-powershell-script-on-the-first-error.

4 years agoMerge branch 'f9559306-4b8b-48e8-88af-675f1b3b2bd5' into 'master'
Matthew Fernandez [Sat, 15 Aug 2020 17:38:24 +0000 (17:38 +0000)]
Merge branch 'f9559306-4b8b-48e8-88af-675f1b3b2bd5' into 'master'

fix a couple of out-of-bounds reads and writes

Closes #1676

See merge request graphviz/graphviz!1509

4 years agofix incorrect allocation computation in strdup_and_subst_obj0
Matthew Fernandez [Sun, 9 Aug 2020 23:48:30 +0000 (16:48 -0700)]
fix incorrect allocation computation in strdup_and_subst_obj0

The logic in this function does two passes through computing the construction of
a string, the first to determine how many bytes will be written and the second
to write those bytes. Unfortunately the logic in these two passes did not match,
and some cases would cause the first pass to underestimate how many bytes would
be written by the second pass. As a result, the second pass would overrun the
extent of allocated memory and begin writing out of bounds.

As far as I can tell, this bug has existed since at least 2010. I think this
code should be refactored in future to use a dynamically expanding string buffer
(e.g. agxbuf) instead of relying on this fragile pairing of logic.

The test case added in this commit was something found by Google Autofuzz
project that triggered a crash in Graphviz due to reading a NULL pointer. After
fixing the initial crash (the previous commit), this out of bounds write was
observable using ASan. This commit fixes #1676.

4 years agofix: avoid accessing min/max rep on a NULL cluster
Matthew Fernandez [Sun, 9 Aug 2020 23:50:14 +0000 (16:50 -0700)]
fix: avoid accessing min/max rep on a NULL cluster

When entering compile_samerank, the parent cluster could be NULL, which was then
incorrectly dereferenced in the two cases affected in this change. This issue
was found by Google Autofuzz project. Related to #1676.

4 years agoMerge branch 'a279c545-8647-42be-9f46-d9eb8d4f872d' into 'master'
Matthew Fernandez [Sat, 15 Aug 2020 16:49:55 +0000 (16:49 +0000)]
Merge branch 'a279c545-8647-42be-9f46-d9eb8d4f872d' into 'master'

fix segfault when passing a malformed newrank and node

Closes #1724

See merge request graphviz/graphviz!1508

4 years agofix: avoid looking for max/min representative on an invalid edge end
Matthew Fernandez [Sun, 9 Aug 2020 19:51:50 +0000 (12:51 -0700)]
fix: avoid looking for max/min representative on an invalid edge end

This avoids a segfault resulting from using a NULL pointer. Fixes #1724.

4 years agoavoid use of a temporary buffer when constructing an error message
Matthew Fernandez [Sun, 9 Aug 2020 18:57:31 +0000 (11:57 -0700)]
avoid use of a temporary buffer when constructing an error message

agerr() supports printf-style arguments, so it was not necessary to manually
build the error string in a temporary buffer.

4 years agoMerge branch 'fix-windows-artifact-archiving' into 'master'
Magnus Jacobsson [Sat, 15 Aug 2020 05:13:42 +0000 (05:13 +0000)]
Merge branch 'fix-windows-artifact-archiving' into 'master'

Fix windows artifact archiving

Closes #1797

See merge request graphviz/graphviz!1525

4 years agoFix publishing of Windows build artifcats
Magnus Jacobsson [Fri, 14 Aug 2020 10:04:08 +0000 (12:04 +0200)]
Fix publishing of Windows build artifcats

The COLLECTION was missing since we no longer get it from the
portable_source stage because the Windows builds start directly and do
not wait for the portable_source stage. Therefor we generate it in the
Windows builds directly instead.

This regresion was introduced in
https://gitlab.com/magjac/graphviz/-/commit/3ac7e1c54fe5f8f4bb304796ab77901c73401aee.

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

4 years agoChange autogen.sh to get collection from gen_version.py
Magnus Jacobsson [Fri, 14 Aug 2020 10:01:59 +0000 (12:01 +0200)]
Change autogen.sh to get collection from gen_version.py

4 years agoAdd --collection option
Magnus Jacobsson [Fri, 14 Aug 2020 09:58:18 +0000 (11:58 +0200)]
Add --collection option

4 years agoChange to all-numeric version entry format and add collection
Magnus Jacobsson [Fri, 14 Aug 2020 09:53:22 +0000 (11:53 +0200)]
Change to all-numeric version entry format and add collection

The version is now specified with a new collection variable which
shall be "stable" or "development" and an all-numeric version. The
"~dev" (and the .<commiter date>) suffix will be added by the script.

4 years agoAdd /usr/bin/env python3 shebang to gen_version.py
Magnus Jacobsson [Fri, 14 Aug 2020 09:52:35 +0000 (11:52 +0200)]
Add /usr/bin/env python3 shebang to gen_version.py

4 years agoMerge branch '299df24c-1ec4-4b41-b594-66450f5ae4e8' into 'master'
Matthew Fernandez [Fri, 14 Aug 2020 15:04:55 +0000 (15:04 +0000)]
Merge branch '299df24c-1ec4-4b41-b594-66450f5ae4e8' into 'master'

misc cleanup

See merge request graphviz/graphviz!1504

4 years agoremove register hints
Matthew Fernandez [Sun, 9 Aug 2020 04:33:51 +0000 (21:33 -0700)]
remove register hints

These do little to nothing on modern compilers.

4 years agoremove some compiler warnings from ~-ing bits field
Matthew Fernandez [Sun, 9 Aug 2020 03:32:50 +0000 (20:32 -0700)]
remove some compiler warnings from ~-ing bits field

Suppresses 15 compilers warnings.

4 years agoremove yet another -Wconversion warning
Matthew Fernandez [Sun, 9 Aug 2020 03:17:09 +0000 (20:17 -0700)]
remove yet another -Wconversion warning

4 years agoremove another -Wconversion flags warning
Matthew Fernandez [Sun, 9 Aug 2020 03:16:56 +0000 (20:16 -0700)]
remove another -Wconversion flags warning

4 years agoremove a -Wconversion warning
Matthew Fernandez [Sun, 9 Aug 2020 03:16:32 +0000 (20:16 -0700)]
remove a -Wconversion warning

4 years agosuppress -Wconversion warnings from int promotion due to ~ of flags
Matthew Fernandez [Sun, 9 Aug 2020 02:39:48 +0000 (19:39 -0700)]
suppress -Wconversion warnings from int promotion due to ~ of flags

Squashes 11 warnings.

4 years agoavoid mixing int and short unsigned wrt flags
Matthew Fernandez [Sun, 9 Aug 2020 02:38:07 +0000 (19:38 -0700)]
avoid mixing int and short unsigned wrt flags

4 years agoavoid storing pointer diff in an int
Matthew Fernandez [Sun, 9 Aug 2020 01:48:41 +0000 (18:48 -0700)]
avoid storing pointer diff in an int

The distance between endb and next was being stored in an int variable. While
this should not exceed the bounds of an int during normal usage, it's risky to
store a pointer difference in a narrower type this way.

4 years agouniversally treat SFIO mode flags as unsigned
Matthew Fernandez [Sun, 9 Aug 2020 00:44:22 +0000 (17:44 -0700)]
universally treat SFIO mode flags as unsigned

This squashes 119 -Wsign-conversion compiler warnings.

4 years agoMerge branch 'start-windows-builds-directly' into 'master'
Magnus Jacobsson [Thu, 13 Aug 2020 15:56:55 +0000 (15:56 +0000)]
Merge branch 'start-windows-builds-directly' into 'master'

Start windows builds directly

See merge request graphviz/graphviz!1519

4 years agoMerge branch '1f838978-873d-47d6-a09e-6a8d76e62e4d' into 'master'
Matthew Fernandez [Thu, 13 Aug 2020 14:59:35 +0000 (14:59 +0000)]
Merge branch '1f838978-873d-47d6-a09e-6a8d76e62e4d' into 'master'

fix mismatch in gverrorf signature and callers

See merge request graphviz/graphviz!1503

4 years agoenable GCC and Clang to diagnose misuse of error() and errorf()
Matthew Fernandez [Sat, 8 Aug 2020 01:02:05 +0000 (18:02 -0700)]
enable GCC and Clang to diagnose misuse of error() and errorf()

This is the equivalent of 0a982672e53868cb394743a03b4e7b68951c282b for these
lib/ast functions.

4 years agoadd an explicit format string parameter to error() and errorf()
Matthew Fernandez [Sat, 8 Aug 2020 00:55:45 +0000 (17:55 -0700)]
add an explicit format string parameter to error() and errorf()

4 years agoremove now-unnecessary cast
Matthew Fernandez [Sat, 8 Aug 2020 00:31:23 +0000 (17:31 -0700)]
remove now-unnecessary cast

The function and the pointer it is being stored into now align in their
signature.

4 years agofix: pass format parameter into gverrorf explicitly
Matthew Fernandez [Sat, 8 Aug 2020 00:20:50 +0000 (17:20 -0700)]
fix: pass format parameter into gverrorf explicitly

The gverrorf function was prototyped in a way that did not align with a function
pointer it was stored into. On platforms with more forgiving varargs calling
conventions, everything worked out OK. However, on other platforms calling
gverrorf through this function pointer would result in stack corruption. This
change aligns gverrorf with the type of the function pointer in which it is
stored.

4 years agochange errorv calling convention to explicitly take a format string
Matthew Fernandez [Sat, 8 Aug 2020 00:04:04 +0000 (17:04 -0700)]
change errorv calling convention to explicitly take a format string

This function implicitly assumed its variable arguments contained a format
string as the first argument. This change pushes the assumption into the calling
convention, making it visible to the compiler.

4 years agoMerge branch 'f25b153d-dfca-415f-80f5-4135e26a9fde' into 'master'
Matthew Fernandez [Thu, 13 Aug 2020 02:30:58 +0000 (02:30 +0000)]
Merge branch 'f25b153d-dfca-415f-80f5-4135e26a9fde' into 'master'

make lib/ast/*.c #includes unambiguous

See merge request graphviz/graphviz!1501

4 years agoremove useless spin lock in lib/ast
Matthew Fernandez [Fri, 7 Aug 2020 03:08:26 +0000 (20:08 -0700)]
remove useless spin lock in lib/ast

This spin lock incorrectly implied to the reader that this code was thread safe.
IMHO there are two primary issues with this spin lock and one secondary issue:

  1. The intention of the spin lock is clearly to provide mutual exclusion
     within fmtbuf(). However this function returns a pointer to a static
     (thread-global) buffer. Excluding two threads from being in this function
     concurrently does not help if both exit the function with pointers into the
     same memory.

  2. The spin lock uses no atomics or volatile. As a result, accesses to the
     lock can be freely rearranged or coalesced, with no regard to thread
     interleaving. This can result in one thread never seeing another thread's
     update (unlock) to the lock. Even worse, my local compiler simply
     recognizes what is happening and omits the lock operations entirely.

  3. (secondary) If this lock worked as intended, it would spin writing to the
     lock variable. This would cause fairly pessimistic cache line bouncing as
     all waiting processors try to keep the line containing the lock in
     exclusive state in their local cache. A more performant way to achieve
     this is to spin waiting to see the lock value change *without* modifying
     the lock yourself. This allows multiple waiting processors to have the line
     in shared state, and minimizes cache coherence traffic.

4 years agomake lib/ast/*.c #includes unambiguous
Matthew Fernandez [Fri, 7 Aug 2020 02:30:41 +0000 (19:30 -0700)]
make lib/ast/*.c #includes unambiguous

Unfortunately we cannot also convert the headers because they are #included by
other libraries. We will do this in a future commit. Related to #1785.

4 years agoremove commented out #includes in lib/ast
Matthew Fernandez [Fri, 7 Aug 2020 02:29:36 +0000 (19:29 -0700)]
remove commented out #includes in lib/ast

4 years agoMerge branch 'remove-rtest-workaround-for-non-stable-cluster-order' into 'master'
Magnus Jacobsson [Wed, 12 Aug 2020 15:04:13 +0000 (15:04 +0000)]
Merge branch 'remove-rtest-workaround-for-non-stable-cluster-order' into 'master'

Remove rtest workaround for non stable cluster order

See merge request graphviz/graphviz!1518

4 years agoSpecify that the Windows CI builds dosn't need any previous job
Magnus Jacobsson [Sun, 9 Aug 2020 12:14:58 +0000 (14:14 +0200)]
Specify that the Windows CI builds dosn't need any previous job

4 years agoChanged to generate VERSION in Windows builds
Magnus Jacobsson [Wed, 12 Aug 2020 14:55:07 +0000 (16:55 +0200)]
Changed to generate VERSION in Windows builds

Instead of getting it from the portable_source stage. This allows the
Windows builds to start directly and not wait for the portable_source
stage.

4 years agoUpdate cluster releated nshare files with rtest.py -g
Magnus Jacobsson [Wed, 12 Aug 2020 07:01:10 +0000 (09:01 +0200)]
Update cluster releated nshare files with rtest.py -g

Using Windows MSBuild Graphviz development version
2.44.2~dev.20200812.0541 (20200812.0541).

Since https://gitlab.com/graphviz/graphviz/-/issues/1789 was fixed,
the output is stable.

4 years agoRemove rtest workaround for non stable cluster order
Magnus Jacobsson [Tue, 11 Aug 2020 15:55:48 +0000 (17:55 +0200)]
Remove rtest workaround for non stable cluster order

https://gitlab.com/graphviz/graphviz/-/issues/1789 and
https://gitlab.com/graphviz/graphviz/-/issues/1767

4 years agoMerge branch 'remove-workaround-for-msbuild-executables-have-wrong-version' into...
Magnus Jacobsson [Wed, 12 Aug 2020 06:51:25 +0000 (06:51 +0000)]
Merge branch 'remove-workaround-for-msbuild-executables-have-wrong-version' into 'master'

Remove test workaround for previously wrong version in MSBuild builds

See merge request graphviz/graphviz!1517

4 years agoRemove workaround for previously wrong version in MSBuild builds
Magnus Jacobsson [Tue, 11 Aug 2020 15:37:41 +0000 (17:37 +0200)]
Remove workaround for previously wrong version in MSBuild builds

https://gitlab.com/graphviz/graphviz/-/issues/1745

4 years agoMerge branch 'remove-config6-at-uninstall' into 'master'
Magnus Jacobsson [Wed, 12 Aug 2020 05:41:00 +0000 (05:41 +0000)]
Merge branch 'remove-config6-at-uninstall' into 'master'

Remove config6 when uninstalling Windows CMake Graphviz

Closes #1752

See merge request graphviz/graphviz!1516

4 years agoMerge branch 'B47EF71C-B166-4F10-96FD-B06894B84010' into 'master'
Matthew Fernandez [Wed, 12 Aug 2020 02:40:30 +0000 (02:40 +0000)]
Merge branch 'B47EF71C-B166-4F10-96FD-B06894B84010' into 'master'

remove legacy Travis CI config

See merge request graphviz/graphviz!1497

4 years agoremove legacy Travis CI config
Matthew Fernandez [Thu, 6 Aug 2020 00:20:29 +0000 (17:20 -0700)]
remove legacy Travis CI config

CI testing now happens on Gitlab.

4 years agoRemove config6 when uninstalling Windows CMake Graphviz
Magnus Jacobsson [Tue, 11 Aug 2020 15:23:58 +0000 (17:23 +0200)]
Remove config6 when uninstalling Windows CMake Graphviz

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

4 years agoMerge branch 'fix-missing-version-in-windows-ci-artifacts' into 'master'
Magnus Jacobsson [Tue, 11 Aug 2020 17:49:25 +0000 (17:49 +0000)]
Merge branch 'fix-missing-version-in-windows-ci-artifacts' into 'master'

Correct filename of Windows exe installer and zip archive

Closes #1792

See merge request graphviz/graphviz!1514

4 years agoMerge branch 'remove-version-from-windows-cmake-install-path' into 'master'
Magnus Jacobsson [Tue, 11 Aug 2020 17:48:55 +0000 (17:48 +0000)]
Merge branch 'remove-version-from-windows-cmake-install-path' into 'master'

Set CPack installation directory to "Graphviz"

Closes #1748

See merge request graphviz/graphviz!1515

4 years agoMerge branch 'fix-cmake-exe-installer-package-version' into 'master'
Magnus Jacobsson [Tue, 11 Aug 2020 17:48:05 +0000 (17:48 +0000)]
Merge branch 'fix-cmake-exe-installer-package-version' into 'master'

Correct package version in CMake exe installer

Closes #1791

See merge request graphviz/graphviz!1513

4 years agoSet CPack installation directory to "Graphviz"
Magnus Jacobsson [Tue, 11 Aug 2020 12:03:16 +0000 (14:03 +0200)]
Set CPack installation directory to "Graphviz"

The default was to include the version in the installation path.

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

4 years agoCorrect filename of Windows exe installer and zip archive
Magnus Jacobsson [Tue, 11 Aug 2020 07:47:20 +0000 (09:47 +0200)]
Correct filename of Windows exe installer and zip archive

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

4 years agoCorrect package version in CMake exe installer
Magnus Jacobsson [Tue, 11 Aug 2020 07:36:59 +0000 (09:36 +0200)]
Correct package version in CMake exe installer

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

4 years agofix edge attribute order confusion
Matthew Fernandez [Wed, 5 Aug 2020 00:47:15 +0000 (17:47 -0700)]
fix edge attribute order confusion

Certain edge attributes are constructed in advance of their being seen in the
input because Graphviz knows it may need default values for them. Later, if seen
in the input, the values of these attributes are updated.

This all works fine unless the order in which these initially-defaulted edge
attributes appear in the input does not match the order in which the default
versions are constructed by Graphviz internally. In this case, the order in
which the attributes are seen in the input is used to construct a dictionary of
them, but the original copies are used to index into attribute values.

In the particular test case added in this commit,

  digraph {
    { rank=same; n1; n2 }

    n2 -> n1 [ headport=s, arrowhead=normal ]
  }

arrowhead was constructed with symbol ID 0 and headport was constructed with
symbol ID 1. But then the later parsing of these attributes resulted in a
dictionary where the headport value was in ID 0 and the arrowhead value was in
ID 1. Indexing into this dictionary with the initially constructed E_arrowhead
resulted in incorrectly returning the value "s". This caused a spurious error
'Arrow type "s" unknown' as well as incorrect graph output.

Fixes #1444. Note that this may just be one of several issues resulting from
using these initially constructed E_* symbols.

4 years agoMerge branch 'use-preinstalled-grep-in-ci' into 'master'
Magnus Jacobsson [Mon, 10 Aug 2020 07:42:20 +0000 (07:42 +0000)]
Merge branch 'use-preinstalled-grep-in-ci' into 'master'

Use preinstalled grep instead of installing it in CI

See merge request graphviz/graphviz!1512

4 years agoUse preinstalled grep instead of installing it in CI
Magnus Jacobsson [Sun, 9 Aug 2020 20:28:13 +0000 (22:28 +0200)]
Use preinstalled grep instead of installing it in CI

Final step that fixes
https://gitlab.com/graphviz/graphviz/-/issues/1759.

4 years agoMerge branch 'use-preinstalled-diffutils-in-ci' into 'master'
Magnus Jacobsson [Mon, 10 Aug 2020 07:13:49 +0000 (07:13 +0000)]
Merge branch 'use-preinstalled-diffutils-in-ci' into 'master'

Use preinstalled diffutils instead of installing it in CI

See merge request graphviz/graphviz!1511

4 years agoUse preinstalled diffutils instead of installing it in CI
Magnus Jacobsson [Sun, 9 Aug 2020 20:07:46 +0000 (22:07 +0200)]
Use preinstalled diffutils instead of installing it in CI

One more step towards https://gitlab.com/graphviz/graphviz/-/issues/1759.

4 years agoMerge branch 'use-preinstalled-pytest-in-ci' into 'master'
Magnus Jacobsson [Mon, 10 Aug 2020 06:44:48 +0000 (06:44 +0000)]
Merge branch 'use-preinstalled-pytest-in-ci' into 'master'

Use preinstalled pytest instead of installing it in CI

See merge request graphviz/graphviz!1510

4 years agoUse preinstalled pytest instead of installing it in CI
Magnus Jacobsson [Sun, 9 Aug 2020 19:38:13 +0000 (21:38 +0200)]
Use preinstalled pytest instead of installing it in CI

One more step towards https://gitlab.com/graphviz/graphviz/-/issues/1759.

4 years agoMerge branch 'use-preinstalled-python3-in-ci' into 'master'
Magnus Jacobsson [Sun, 9 Aug 2020 19:03:10 +0000 (19:03 +0000)]
Merge branch 'use-preinstalled-python3-in-ci' into 'master'

Use preinstalled Python 3 instead of installing it in CI

See merge request graphviz/graphviz!1507

4 years agoUse preinstalled Python 3 instead of installing it in CI
Magnus Jacobsson [Sun, 9 Aug 2020 13:39:51 +0000 (15:39 +0200)]
Use preinstalled Python 3 instead of installing it in CI

One more step towards https://gitlab.com/graphviz/graphviz/-/issues/1759.

4 years agoMerge branch 'use-preinstalled-perl-in-ci' into 'master'
Magnus Jacobsson [Sun, 9 Aug 2020 18:13:39 +0000 (18:13 +0000)]
Merge branch 'use-preinstalled-perl-in-ci' into 'master'

Use preinstalled perl in CI

See merge request graphviz/graphviz!1502

4 years agofix segfault with large edge weights
Matthew Fernandez [Sun, 2 Aug 2020 16:37:49 +0000 (09:37 -0700)]
fix segfault with large edge weights

When passed a large edge weight, e.g. 1073741824, an integer overflow would
occur when calculating virtual weights. This would go on to cause a segfault as
calculations were increasingly thrown off by negative values.

This change detects when an overflow will occur and exits. Calling exit() from
within a deeply nested library function like this is not good practice, but we
don't have a better alternative right now. The call chain involves gvLayout()
whose interface to the plugins inherently has no way of reporting failure.

Fixes #1783.

4 years agofix typo in clustg
Matthew Fernandez [Tue, 4 Aug 2020 00:57:15 +0000 (17:57 -0700)]
fix typo in clustg

Fixes #1781.

4 years agoUse preinstalled perl instead of installing it in CI
Magnus Jacobsson [Fri, 7 Aug 2020 09:17:46 +0000 (11:17 +0200)]
Use preinstalled perl instead of installing it in CI

One more step towards https://gitlab.com/graphviz/graphviz/-/issues/1759.

4 years agoMerge branch 'adapt-to-moved-nsis' into 'master'
Magnus Jacobsson [Sun, 9 Aug 2020 10:17:21 +0000 (10:17 +0000)]
Merge branch 'adapt-to-moved-nsis' into 'master'

Adapt to moved NSIS install directory

See merge request graphviz/graphviz!1506

4 years agoAdapt to moved NSIS install directory
Magnus Jacobsson [Sun, 9 Aug 2020 09:16:53 +0000 (11:16 +0200)]
Adapt to moved NSIS install directory

4 years agoMerge branch 'use-preinstalled-nsis' into 'master'
Magnus Jacobsson [Sun, 9 Aug 2020 05:30:44 +0000 (05:30 +0000)]
Merge branch 'use-preinstalled-nsis' into 'master'

Use preinstalled nsis instead of installing it in CI

See merge request graphviz/graphviz!1505

4 years agoUse preinstalled nsis instead of installing it in CI
Magnus Jacobsson [Sun, 9 Aug 2020 04:52:51 +0000 (06:52 +0200)]
Use preinstalled nsis instead of installing it in CI

4 years agoMerge branch 'port-rtest.sh-to-python' into 'master'
Magnus Jacobsson [Sat, 8 Aug 2020 05:22:53 +0000 (05:22 +0000)]
Merge branch 'port-rtest.sh-to-python' into 'master'

Port rtest.sh to Python and enable rtest on Windows

Closes #1779

See merge request graphviz/graphviz!1496

4 years agoassign Cgraph IDs linearly
Matthew Fernandez [Sat, 1 Aug 2020 19:33:46 +0000 (12:33 -0700)]
assign Cgraph IDs linearly

Previously Cgraph only assigned odd IDs from the internal counter, because even
IDs were reserved for pointers derived from agstrdup. Now that we no longer use
pointers as IDs there is nothing special about an ID being even or odd.

4 years agofix: assign anonymous IDs to named entities
Matthew Fernandez [Sat, 1 Aug 2020 19:29:28 +0000 (12:29 -0700)]
fix: assign anonymous IDs to named entities

Instead of using string pointers as IDs, we now assign the IDs for named
entities exactly the same way we assign them for anonymous identities. This
works because we first check the internal map before creating any new ID, so
processing the same name twice will result in the same ID as before.

This fixes #1767. Now clusters within a graph are consistently processed in the
order in which they appear in the input file, rather than an order dependent on
pointers given out by the allocator.

4 years agostop relying on pointers-as-IDs to retrieve strings
Matthew Fernandez [Sat, 1 Aug 2020 19:05:08 +0000 (12:05 -0700)]
stop relying on pointers-as-IDs to retrieve strings

Now that strings are always stored in the internal map, they can be retrieved
from there instead of relying on the assumption that the ID aliases the name of
an entity. Related to #1767.

4 years agoadd non-local names to Cgraph internal map as well as local names
Matthew Fernandez [Sat, 1 Aug 2020 18:56:23 +0000 (11:56 -0700)]
add non-local names to Cgraph internal map as well as local names

This allows the internal name->id map to track *all* names. Related to #1767.

4 years agocheck internal map for IDs prior to creating one from a string
Matthew Fernandez [Sat, 1 Aug 2020 19:19:27 +0000 (12:19 -0700)]
check internal map for IDs prior to creating one from a string

This has no effect currently because the case that preceded this check was for
non-local names, that are not inserted into the internal map anyway. However, an
upcoming change will alter this behavior, so we want to make sure that if a name
already has a known ID it is found first. Related to #1767.

4 years agofix: take a copy of font name when caching fonts in Pango plugin
Matthew Fernandez [Sat, 1 Aug 2020 16:37:20 +0000 (09:37 -0700)]
fix: take a copy of font name when caching fonts in Pango plugin

The Pango plugin caches the last used font to save an expensive reconstruction
process each time it runs. To determine whether the cached font is eligible for
reuse, the name and size of the requested font are checked against the cache
entry. However the name of the cached font was only stored as a pointer to the
original name. The cached entry could outlive the original font, which could be
freed before a next call into the plugin. As a result, the plugin would perform
a strcmp using a stale freed pointer.

To address this we simply take a copy of the font name's string data instead of
just a pointer to it. There is no need to copy any of the other cached fields as
they are only accessed if the font name check finds the entry to be valid.

Related to #1767.

4 years agofix: suppress Xlib finalization if initialization failed
Matthew Fernandez [Sun, 2 Aug 2020 00:13:04 +0000 (17:13 -0700)]
fix: suppress Xlib finalization if initialization failed

The initialization function of a device plugin has no way of reporting failure
to its called. So an attempt to use the x11 back end calls xlib_finalize() even
if xlib_initialize() failed. To make this safe, we set a flag if initialization
succeeds and make xlib_finalize() a no-op if the flag is not set. Fixes #1776.

4 years agoMerge branch 'remove-unnecessary-cmake-install-in-ci' into 'master'
Magnus Jacobsson [Fri, 7 Aug 2020 17:50:21 +0000 (17:50 +0000)]
Merge branch 'remove-unnecessary-cmake-install-in-ci' into 'master'

Use existing CMake on GitLab Windows runner instead of installing it

See merge request graphviz/graphviz!1498

4 years agofix: cast overflow with large font sizes in Pango plugin
Matthew Fernandez [Sat, 1 Aug 2020 23:24:58 +0000 (16:24 -0700)]
fix: cast overflow with large font sizes in Pango plugin

When using an abnormally large font size, computing the Pango units for the size
would overflow. This resulted in an assertion failure in Pango when seeing a
negative size value. This issue was found by Google Autofuzz project. This
fixes #1314.

4 years agoremove now unnecessary detection of str[n]casecmp
Matthew Fernandez [Sun, 2 Aug 2020 02:03:16 +0000 (19:03 -0700)]
remove now unnecessary detection of str[n]casecmp

Related to #1775.

4 years agoremove empty compat.h header
Matthew Fernandez [Sun, 2 Aug 2020 01:53:28 +0000 (18:53 -0700)]
remove empty compat.h header

This header was not doing anything useful.

4 years agoreplace in-tree str[n]casecmp implementations with libc
Matthew Fernandez [Sun, 2 Aug 2020 01:42:17 +0000 (18:42 -0700)]
replace in-tree str[n]casecmp implementations with libc

Instead of carrying multiple implementations of these functions in the Graphviz
tree, we now call the built-in support on the current platform. Closes #1775.

4 years agoadd an abstraction for strcasecmp
Matthew Fernandez [Sun, 2 Aug 2020 01:13:13 +0000 (18:13 -0700)]
add an abstraction for strcasecmp

Related to #1775.

4 years agoUse existing cmake instead of installing it
Magnus Jacobsson [Wed, 5 Aug 2020 14:42:10 +0000 (16:42 +0200)]
Use existing cmake instead of installing it

The first step towards https://gitlab.com/graphviz/graphviz/-/issues/1759.

4 years agoMerge branch 'use-windows-dependencies-submodules-from-the-graphviz-gitlab-group...
Magnus Jacobsson [Fri, 7 Aug 2020 09:10:16 +0000 (09:10 +0000)]
Merge branch 'use-windows-dependencies-submodules-from-the-graphviz-gitlab-group' into 'master'

Change to get windows/dependencies submodules from graphviz

See merge request graphviz/graphviz!1500

4 years agoMerge branch 'add-missing-changelog-entry-for-fixed-win-msbuild-version' into 'master'
Magnus Jacobsson [Fri, 7 Aug 2020 05:11:45 +0000 (05:11 +0000)]
Merge branch 'add-missing-changelog-entry-for-fixed-win-msbuild-version' into 'master'

Add missing CHANGELOG entry for fixed version in MSBuilds

See merge request graphviz/graphviz!1499

4 years agoSimplify pytests that call rtest.py
Magnus Jacobsson [Thu, 6 Aug 2020 15:16:44 +0000 (17:16 +0200)]
Simplify pytests that call rtest.py

4 years agomake sfio #includes unambiguous
Matthew Fernandez [Sat, 1 Aug 2020 00:51:24 +0000 (17:51 -0700)]
make sfio #includes unambiguous

This change makes the #includes of lib/sfio headers unambiguous within the
lib/sfio C sources. The upcoming plan is to also make the header #includes and
any of lib/sfio's dependents also unambiguous this way. Related to #1785.

4 years agomake an include of vthread.h relative
Matthew Fernandez [Sat, 1 Aug 2020 00:23:40 +0000 (17:23 -0700)]
make an include of vthread.h relative

This is a step along the way towards less ambiguous #includes. Eventually this
should become a more clearly qualified #include like <sfio/vthread.h>. Related
to #1785.

4 years agoremove lib/sfio include directory addition of lib/vmalloc in msbuild
Matthew Fernandez [Sat, 1 Aug 2020 00:22:29 +0000 (17:22 -0700)]
remove lib/sfio include directory addition of lib/vmalloc in msbuild

Sfio does not appear to rely on vmalloc.

4 years agoremove lib/sfio include directory addition of lib/ast in autotools build
Matthew Fernandez [Sat, 1 Aug 2020 00:21:07 +0000 (17:21 -0700)]
remove lib/sfio include directory addition of lib/ast in autotools build

Sfio does not appear to rely on any headers from lib/ast.

4 years agoChange to get windows/dependencies submodules from graphviz
Magnus Jacobsson [Thu, 6 Aug 2020 11:08:51 +0000 (13:08 +0200)]
Change to get windows/dependencies submodules from graphviz

The windows/dependencies repositories are now hosted as subprojects in
the GitLab Graphviz group:

* https://gitlab.com/graphviz/graphviz-build-utilities
* https://gitlab.com/graphviz/graphviz-windows-dependencies

4 years agoAdd CHANGELOG entry for fixed version in MSBuilds
Magnus Jacobsson [Thu, 6 Aug 2020 09:55:58 +0000 (11:55 +0200)]
Add CHANGELOG entry for fixed version in MSBuilds

4 years agoUpdate nshare with rtest.py -g using Windows MSBuild Release 2.44.1
Magnus Jacobsson [Wed, 5 Aug 2020 09:31:21 +0000 (11:31 +0200)]
Update nshare with rtest.py -g using Windows MSBuild Release 2.44.1

4 years agoAdd temporary skip of rtests using ps shapefile on Windows
Magnus Jacobsson [Wed, 5 Aug 2020 05:32:42 +0000 (07:32 +0200)]
Add temporary skip of rtests using ps shapefile on Windows

Fails because of https://gitlab.com/graphviz/graphviz/-/issues/1790

4 years agoAdd temporary skip of ps & gv diff on Windows for specific rtests
Magnus Jacobsson [Tue, 4 Aug 2020 11:40:29 +0000 (13:40 +0200)]
Add temporary skip of ps & gv diff on Windows for specific rtests

May fail because of https://gitlab.com/graphviz/graphviz/-/issues/1789

4 years agoDon't treat Windows as an unrecognized system
Magnus Jacobsson [Mon, 3 Aug 2020 06:01:25 +0000 (08:01 +0200)]
Don't treat Windows as an unrecognized system

4 years agoInstall diffutils in Windows CI
Magnus Jacobsson [Sun, 2 Aug 2020 10:02:31 +0000 (12:02 +0200)]
Install diffutils in Windows CI

4 years agoAdd temporary skip of PNG diff for Windows CMake rtest
Magnus Jacobsson [Mon, 3 Aug 2020 09:50:13 +0000 (11:50 +0200)]
Add temporary skip of PNG diff for Windows CMake rtest

Fails because of https://gitlab.com/graphviz/graphviz/-/issues/1788

4 years agoAdd temporary skip of rtests using shapefile for Windows MSBuild Debug
Magnus Jacobsson [Sun, 2 Aug 2020 07:17:02 +0000 (09:17 +0200)]
Add temporary skip of rtests using shapefile for Windows MSBuild Debug

Fails because of https://gitlab.com/graphviz/graphviz/-/issues/1787

4 years agoAdd temporary skip of rtests using overlap=false for Windows MSBuild
Magnus Jacobsson [Sat, 1 Aug 2020 16:20:40 +0000 (18:20 +0200)]
Add temporary skip of rtests using overlap=false for Windows MSBuild

Fails because of https://gitlab.com/graphviz/graphviz/-/issues/1269