Matthew Fernandez [Tue, 13 Apr 2021 02:19:30 +0000 (19:19 -0700)]
remove CreateHyperlink
This function was adding no value over just calling the Hyperlink constructor
directly.
Matthew Fernandez [Tue, 13 Apr 2021 02:11:10 +0000 (19:11 -0700)]
manage Hyperlinks by value instead of pointer in the visio plugin
There is no inheritance involved here, so there was no advantage to manually
managing memory for Hyperlinks or passing them around by pointer.
Matthew Fernandez [Tue, 13 Apr 2021 01:57:36 +0000 (18:57 -0700)]
fix: use managed memory for Hyperlink’s string pointers
Similar to the prior fix to Run, this removes a latent safety issue with the
management of these pointers.
Matthew Fernandez [Tue, 13 Apr 2021 01:48:32 +0000 (18:48 -0700)]
manage _run member of Text as a value instead of a pointer
This member is never set to NULL and the Run class is not involved in any
inheritance hierarchy. So there is no need to heap-allocate it or pass it around
by pointer.
Matthew Fernandez [Tue, 13 Apr 2021 01:40:25 +0000 (18:40 -0700)]
fix: use managed memory for Run’s _text member
This removes the need to manually manage memory for this member but, more
importantly makes this class copy-safe. The implicit copy constructor of this
class would copy the pointer in the _text member. When either the original
object or the new copy was deleted, the pointer would be freed leaving its
duplicate in the other copy dangling. Any attempt to access this would result in
use-after-free and deleting the object would cause a double-free.
Following this change, it is safe to copy a Run object. This issue was latent,
because no existing code causes a Run object to be copied.
Matthew Fernandez [Sun, 18 Apr 2021 20:19:23 +0000 (20:19 +0000)]
Merge branch 'smattr/
ad4aa51f-c3fd-4ba1-97a5-
61d0fba501eb' into 'main'
some warning clean up in cmd/smyrna
See merge request graphviz/graphviz!1898
Matthew Fernandez [Mon, 12 Apr 2021 04:40:39 +0000 (21:40 -0700)]
squash -Wmissing-prototypes warning
Matthew Fernandez [Mon, 12 Apr 2021 04:32:18 +0000 (21:32 -0700)]
remove unused parameter from glmotion_zoom
Matthew Fernandez [Mon, 12 Apr 2021 04:26:17 +0000 (21:26 -0700)]
remove unused inc_value variable in glmotion_zoom_inc
Matthew Fernandez [Mon, 12 Apr 2021 04:24:28 +0000 (21:24 -0700)]
remove unused Status variable
This was only used by LoadGLTextures that was recently removed.
Matthew Fernandez [Mon, 12 Apr 2021 04:24:02 +0000 (21:24 -0700)]
squash a -Wfloat-conversion warning
Matthew Fernandez [Mon, 12 Apr 2021 04:10:56 +0000 (21:10 -0700)]
remove unused LoadGLTextures
Matthew Fernandez [Mon, 12 Apr 2021 04:08:16 +0000 (21:08 -0700)]
squash -Wunused-parameter in EmbedText
Matthew Fernandez [Mon, 12 Apr 2021 04:07:17 +0000 (21:07 -0700)]
squash -Wunused-parameter warning in InsertImage
Matthew Fernandez [Mon, 12 Apr 2021 04:06:27 +0000 (21:06 -0700)]
squash -Wunused-parameter warning in SetFont
Matthew Fernandez [Mon, 12 Apr 2021 04:05:49 +0000 (21:05 -0700)]
squash -Wunused-parameter warnings in SetStyle
Matthew Fernandez [Mon, 12 Apr 2021 04:05:22 +0000 (21:05 -0700)]
squash -Wunused-parameter in SetPenColor
Matthew Fernandez [Mon, 12 Apr 2021 04:04:49 +0000 (21:04 -0700)]
squash -Wunused-parameter warning in SetFillColor
Matthew Fernandez [Mon, 12 Apr 2021 04:03:01 +0000 (21:03 -0700)]
fix -Wpointer-compare warning
Matthew Fernandez [Mon, 12 Apr 2021 04:01:36 +0000 (21:01 -0700)]
remove unused filled variable from DrawPolygon
Matthew Fernandez [Mon, 12 Apr 2021 03:57:38 +0000 (20:57 -0700)]
remove unused parameter from set_options
Matthew Fernandez [Mon, 12 Apr 2021 03:55:56 +0000 (20:55 -0700)]
squash a -Wstrict-prototypes warning
Matthew Fernandez [Mon, 12 Apr 2021 03:54:53 +0000 (20:54 -0700)]
remove unused parameter from arcmouseDrag
Matthew Fernandez [Mon, 12 Apr 2021 03:49:40 +0000 (20:49 -0700)]
remove unused parameter from arcmouseClick
Matthew Fernandez [Mon, 12 Apr 2021 03:13:04 +0000 (20:13 -0700)]
remove unused code
Matthew Fernandez [Sun, 18 Apr 2021 05:02:48 +0000 (05:02 +0000)]
Merge branch 'smattr/
5EDB9D68-064A-4027-AFC3-
A46101BAF4E5' into 'main'
in Windows CI tasks, install Python 3 from Chocolatey
See merge request graphviz/graphviz!1896
Matthew Fernandez [Sun, 11 Apr 2021 03:30:28 +0000 (20:30 -0700)]
remove Python 3.8 fallback in Windows CI tasks
As of the previous commit, Python >3.8 is installed prior to running this
script, so no fallback should be required. Python 3.8 can be removed from the
Windows build utilities repository.¹
¹ https://gitlab.com/graphviz/graphviz-build-utilities
Matthew Fernandez [Sun, 11 Apr 2021 03:01:28 +0000 (20:01 -0700)]
install Python 3 as a pre-requisite in Windows CI tasks
Prior to this change, Python 3.8 was used on Windows in CI via the Windows
build dependencies repository.¹ This works but has a number of shortcomings:
1. Upgrading the version of Python used in CI requires access to a Windows
machine; and
2. Upgrading the version of Python used in CI requires building CPython from
source; and
3. Python-dependent failures are hard to root cause because they may be an
issue with how we built CPython.²
As of this commit, Python 3 is installed via the Chocolatey³ package manager.
At time of writing, this installs Python 3.9.4. This is not pinned to a specific
version – i.e. a new Chocolatey package of Python 3 will result in Graphviz
immediately using that in CI. I believe this is actually the behavior we want
right now; pro-actively catching any issues caused by Python upgrades.
This does not change the baseline requirement for Graphviz CI/test scripts from
Python 3.6. Scripts should still be written to be backwards compatible to 3.6.
As this change introduces a new non-trivial step in the Windows CI tasks,
execution time is relevant. At time of writing, the macOS jobs dominate Graphviz
CI execution time, both before and after this change. Thus I think this is
acceptable.
¹ https://gitlab.com/graphviz/graphviz-build-utilities
² E.g. #2000, “CI Python OSErrors from Windows tasks”
³ https://chocolatey.org/
Matthew Fernandez [Sun, 18 Apr 2021 03:36:06 +0000 (03:36 +0000)]
Merge branch 'smattr/
d3552219-a755-4a56-9a55-
2eebb5819810' into 'main'
more vpsc clean up
See merge request graphviz/graphviz!1895
Matthew Fernandez [Sun, 11 Apr 2021 02:45:46 +0000 (19:45 -0700)]
push a variable closer its use in generateYConstraints
Matthew Fernandez [Sun, 11 Apr 2021 02:45:29 +0000 (19:45 -0700)]
push a variable closer to its use in generateXConstraints
Matthew Fernandez [Sun, 11 Apr 2021 02:43:58 +0000 (19:43 -0700)]
use range-based for loops to clean up some iteration
Matthew Fernandez [Sun, 11 Apr 2021 02:32:44 +0000 (19:32 -0700)]
cut variable dependency and push closer to its use in generateYConstraints
Matthew Fernandez [Sun, 11 Apr 2021 02:32:11 +0000 (19:32 -0700)]
cut variable dependency and push closer to its use in generateXConstraints
Matthew Fernandez [Sun, 11 Apr 2021 02:30:26 +0000 (19:30 -0700)]
remove unnecessary manual indexing in generateYConstraints
It’s a little hard to see because the variable i is also shadowed within this
loop, but the loop index is unnecessary.
Matthew Fernandez [Sun, 11 Apr 2021 02:29:28 +0000 (19:29 -0700)]
remove unnecessary manual indexing in generateXConstraints
It’s a little hard to see because the variable i is also shadowed within this
loop, but the loop index is unnecessary.
Matthew Fernandez [Sun, 11 Apr 2021 02:18:36 +0000 (19:18 -0700)]
manage events collections in vpsc as values instead of pointers
This removes some manual memory management and optimizes the layout of these
elements (note emplace_back). Memory for individual events is now retained
slightly longer because a manual deletion of pointers event-by-event was removed
and we now rely on the final vector clean up to free this memory. But the impact
of this is expected to be negligible and outweighed by the improved layout.
Matthew Fernandez [Sun, 11 Apr 2021 02:06:31 +0000 (19:06 -0700)]
replace some qsort calls with std::sort
This is safer and has the potential to be more efficient. Note that this
required rewriting the involved comparator to judge less-than instead of a
three-outcome comparison.
Matthew Fernandez [Sun, 11 Apr 2021 01:41:25 +0000 (18:41 -0700)]
replace a manual array with a vector in generateYConstraints
There is no need to manually manage memory for this collection.
Matthew Fernandez [Sun, 11 Apr 2021 01:37:07 +0000 (18:37 -0700)]
replace a manual array with a vector in generateXConstraints
There is no need to manually manage memory for this collection.
Matthew Fernandez [Sun, 11 Apr 2021 01:27:12 +0000 (18:27 -0700)]
make events a local variable in generateXConstraints and generateYConstraints
Not only is this variable not used outside its containing file (could be
declared static), but its lifetime within both these functions is entirely
contained. Reusing the same global in these functions has no advantage, but
impairs the compiler’s ability to optimize by potentially confusing its alias
analysis.
Matthew Fernandez [Sun, 18 Apr 2021 02:53:17 +0000 (02:53 +0000)]
Merge branch 'smattr/
187F4EB8-B1D4-4C94-B167-
3B7BFDA60D06' into 'main'
more sfstropen removal
See merge request graphviz/graphviz!1894
Matthew Fernandez [Sat, 10 Apr 2021 21:27:32 +0000 (14:27 -0700)]
remove some unnecessary bracketing
Matthew Fernandez [Sat, 10 Apr 2021 21:03:28 +0000 (14:03 -0700)]
fix some Windows detection in libexpr
This silences some -Wundef warnings on non-Windows but, more importantly, makes
Windows environments more reliably see the code intended for them.
Matthew Fernandez [Sat, 10 Apr 2021 20:51:21 +0000 (13:51 -0700)]
squash a -Wsign-compare warning
Matthew Fernandez [Sat, 10 Apr 2021 20:49:39 +0000 (13:49 -0700)]
squash a -Wunused-parameter
Matthew Fernandez [Sat, 10 Apr 2021 20:48:30 +0000 (13:48 -0700)]
squash a -Wunused-parameter warning
Matthew Fernandez [Sat, 10 Apr 2021 20:43:13 +0000 (13:43 -0700)]
emove use of persistent buffer in extokens
This removes a layer of indirection. Previously data was being written to the
persistent scratch space, ex->tmp, and then copied to a further temporary buffer
in tok. We now simply allocate to tok and write directly into it. This also
addresses an issue where the persistent buffer was being unconditionally used,
despite that it may have failed to be opened due to lack of memory.
Related to #1873.
Matthew Fernandez [Sat, 10 Apr 2021 20:37:45 +0000 (13:37 -0700)]
remove use of persistent buffer in exsplit
This removes a layer of indirection. Previously data was being written to the
persistent scratch space, ex->tmp, and then copied to a further temporary buffer
in tok. We now simply allocate to tok and write directly into it. This also
addresses an issue where the persistent buffer was being unconditionally used,
despite that it may have failed to be opened due to lack of memory.
Related to #1873.
Matthew Fernandez [Sat, 10 Apr 2021 20:12:34 +0000 (13:12 -0700)]
use a local buffer for expr sprintf instead of a persistent one
Though this introduces another call to sfstropen, it is actually a step towards
removing sfstropen calls. The first part of this is localizing existing usages;
avoiding the ex->tmp buffer. Then the implementation of expr’s sprintf itself
will need to be refactored to operate on a non-SFIO buffer.
Note that this also addresses an issue where expr’s sprintf would use the
persistent buffer even if prior opening of it had failed due to lack of memory.
Related to #1873.
Matthew Fernandez [Sat, 10 Apr 2021 19:49:58 +0000 (12:49 -0700)]
remove use of persistent buffer in str_add
Related to #1873.
Matthew Fernandez [Sat, 10 Apr 2021 19:38:35 +0000 (12:38 -0700)]
remove some unnecessary casts
These pointers implicitly coerce.
Matthew Fernandez [Sun, 18 Apr 2021 01:09:31 +0000 (01:09 +0000)]
Merge branch 'smattr/
71d79a68-7f10-496c-bc4b-
41406129743b' into 'main'
remove another use of setjmp/longjmp
See merge request graphviz/graphviz!1893
Matthew Fernandez [Sat, 10 Apr 2021 02:48:41 +0000 (19:48 -0700)]
remove now unused jmp buffer
Having unraveled the use of longjmp here, the jmp_buf and its setup are no
longer required.
On GCC 8.3.0 this removes a -Wclobbered warning. Though interestingly the
warning text itself is a false positive, referencing nverts that is not used in
the setjmp(…)!=0 path. The actual dangerously used variables in this scenario
were polygon_list and vertex_list. My take away here is that *any* -Wclobbered
warning is typically an indicator of incorrect code. I have never seen a
-Wclobbered warning (from any compiler) for code that was not buggy.
Related to #1801.
Matthew Fernandez [Sat, 10 Apr 2021 02:43:34 +0000 (19:43 -0700)]
return an error value instead of longjmping out of find_ints
Related to #1801.
Matthew Fernandez [Sat, 10 Apr 2021 02:38:14 +0000 (19:38 -0700)]
anticipate <0 meaning failure from find_ints
find_ints does not currently return negative values. It returns only 0 or 1.
However, we would like to unravel a use of longjmp within it, so returning a
negative value to indicate an error is convenient. This is preparation for
upcoming changes. Related to #1801.
Matthew Fernandez [Sat, 10 Apr 2021 02:26:37 +0000 (19:26 -0700)]
fix comment typo
Matthew Fernandez [Sun, 18 Apr 2021 00:29:05 +0000 (00:29 +0000)]
Merge branch 'smattr/
a2c0e10b-3770-4314-9761-
004b3181b192' into 'main'
observe CFLAGS and LDFLAGS when compiling C code during testing
See merge request graphviz/graphviz!1903
Matthew Fernandez [Fri, 16 Apr 2021 00:29:57 +0000 (17:29 -0700)]
echo C compiler commands in the test suite
If a test compiles and/or runs C code and that test fails, included in the test
suite output will now be the commands themselves that were run, echoed in the
style of Bash’s set -x.
Matthew Fernandez [Fri, 16 Apr 2021 00:29:30 +0000 (17:29 -0700)]
fix a Python type signature
Technically List[str] is the type of a list of strings, not [str].
Matthew Fernandez [Thu, 15 Apr 2021 04:07:09 +0000 (21:07 -0700)]
support receiving C compiler flags in the test suite from the environment
The environment variables CFLAGS and LDFLAGS now also effect the flags used with
the C compiler in the test suite, in addition to the build system. Related to
#1881.
Matthew Fernandez [Thu, 15 Apr 2021 04:02:47 +0000 (21:02 -0700)]
use general C compiler support for vmalloc test
Now that the test suite’s C compiler support also allows passing extra flags,
the vmalloc test no longer needs to do its work manually.
Matthew Fernandez [Thu, 15 Apr 2021 03:55:55 +0000 (20:55 -0700)]
support passing extra args to the test suite’s C compiler interface
Matthew Fernandez [Thu, 15 Apr 2021 03:36:52 +0000 (20:36 -0700)]
consolidate common test suite functionality
In future we could grow this gvtest.py to be a more full featured library of
common functions we need in the Graphviz test suite.
Matthew Fernandez [Sat, 17 Apr 2021 23:47:13 +0000 (23:47 +0000)]
Merge branch 'smattr/
2B83BB5F-5D3B-4537-A875-
E8225842E9C7' into 'main'
visio plugin: further pointer and manual memory management clean up
See merge request graphviz/graphviz!1889
Matthew Fernandez [Thu, 8 Apr 2021 00:39:33 +0000 (17:39 -0700)]
visio plugin: manage _chars member of Text as a value instead of a pointer
This member is never set to NULL and the Char class is not involved in any
inheritance hierarchy. So there is no need to heap-allocate it or pass it around
by pointer.
Matthew Fernandez [Thu, 8 Apr 2021 00:34:01 +0000 (17:34 -0700)]
visio plugin: manage _para member of Text as a value instead of a pointer
This member is never set to NULL and the Para class is not involved in any
inheritance hierarchy. So there is no need to heap-allocate it or pass it around
by pointer.
Matthew Fernandez [Thu, 8 Apr 2021 00:27:12 +0000 (17:27 -0700)]
visio plugin: use more modern #pragma once guards
Matthew Fernandez [Thu, 8 Apr 2021 00:25:25 +0000 (17:25 -0700)]
visio plugin: manage _fill member of Graphic as a smart pointer
Matthew Fernandez [Thu, 8 Apr 2021 00:21:14 +0000 (17:21 -0700)]
visio plugin: manage _geom member of Graphic as a smart pointer
Matthew Fernandez [Thu, 8 Apr 2021 00:10:31 +0000 (17:10 -0700)]
visio plugin: manage _line member of Graphic as a value instead of pointer
This member is never set to NULL and the Line class is not involved in any
inheritance hierarchy. So there is no need to heap-allocate it or pass it around
by pointer.
Matthew Fernandez [Sat, 17 Apr 2021 23:04:30 +0000 (23:04 +0000)]
Merge branch 'smattr/
93449861-eaa3-4072-a1fc-
0f7aa57f77eb' into 'main'
remove unnecessary lib/ast function
See merge request graphviz/graphviz!1892
Matthew Fernandez [Sat, 10 Apr 2021 00:02:44 +0000 (17:02 -0700)]
remove now no longer used pathbin.c
Matthew Fernandez [Sat, 10 Apr 2021 00:02:39 +0000 (17:02 -0700)]
inline a getenv accessor and use a more appropriate return type
Matthew Fernandez [Sat, 10 Apr 2021 00:02:34 +0000 (17:02 -0700)]
remove non-portable default for $PATH
Across the range of platforms Graphviz runs on, this is not a reasonable
default. E.g. Windows will have none of these paths and this is not even how one
separates paths in Windows $PATH. This is mostly a latent issue, as it is very
rare for $PATH to be unset.
Matthew Fernandez [Sat, 10 Apr 2021 00:02:25 +0000 (17:02 -0700)]
remove getenv("PATH") caching
On most modern platforms, getenv is accessing a static array in the address
space. So this caching does not add any benefit.
Matthew Fernandez [Sat, 17 Apr 2021 22:23:03 +0000 (22:23 +0000)]
Merge branch 'smattr/
AB0E37EB-52FF-4036-8BF3-
F01425B7486E' into 'main'
remove astquery prototype
See merge request graphviz/graphviz!1891
Matthew Fernandez [Fri, 9 Apr 2021 15:21:51 +0000 (08:21 -0700)]
remove astquery prototype
This function is not implemented.
Matthew Fernandez [Sat, 17 Apr 2021 21:42:12 +0000 (21:42 +0000)]
Merge branch 'smattr/
ca8249f0-859f-412b-832d-
55cdf8d7bab9' into 'main'
squash some compiler warnings in lib/ortho
See merge request graphviz/graphviz!1890
Matthew Fernandez [Thu, 8 Apr 2021 04:55:42 +0000 (21:55 -0700)]
remove commented out code
Matthew Fernandez [Thu, 8 Apr 2021 04:49:57 +0000 (21:49 -0700)]
remove unused parameter e from addEdgeToNode
Matthew Fernandez [Thu, 8 Apr 2021 04:16:41 +0000 (21:16 -0700)]
remove some commented out code
Matthew Fernandez [Thu, 8 Apr 2021 04:13:21 +0000 (21:13 -0700)]
track edge counts as size_t in ortho.c
This fixes some -Wsign-conversion warnings at the expense of introducing some
-Wsign-compare warnings. The latter should be removed as we migrate the cell
count in mazes to size_t.
Matthew Fernandez [Thu, 8 Apr 2021 04:07:28 +0000 (21:07 -0700)]
remove unused parameter ix to emitEdge
Matthew Fernandez [Thu, 8 Apr 2021 04:04:04 +0000 (21:04 -0700)]
remove an unnecessary cast
Matthew Fernandez [Thu, 8 Apr 2021 03:58:25 +0000 (20:58 -0700)]
represent route array lengths as size_t
This fixes one -Wsign-conversion warning, though introduces a -Wconversion
warning. We should be able to remove the latter as we continue cleaning up the
use of int for sizes.
Matthew Fernandez [Thu, 8 Apr 2021 03:54:07 +0000 (20:54 -0700)]
remove some commented out code
Matthew Fernandez [Thu, 8 Apr 2021 03:44:02 +0000 (20:44 -0700)]
squash a -Wsign-conversion warning
Matthew Fernandez [Thu, 8 Apr 2021 03:39:19 +0000 (20:39 -0700)]
squash a -Wmissing-prototypes warning
Matthew Fernandez [Thu, 8 Apr 2021 03:33:40 +0000 (20:33 -0700)]
squash some -Wunused-parameter warnings
Matthew Fernandez [Thu, 8 Apr 2021 03:30:10 +0000 (20:30 -0700)]
squash two -Wswitch-default warnings
Matthew Fernandez [Thu, 8 Apr 2021 02:55:01 +0000 (19:55 -0700)]
squash a -Wswitch-default warning
Matthew Fernandez [Thu, 8 Apr 2021 02:51:54 +0000 (19:51 -0700)]
squash a -Wswitch-default warning
Matthew Fernandez [Thu, 8 Apr 2021 02:50:53 +0000 (19:50 -0700)]
squash some -Wunused-parameter warnings
Matthew Fernandez [Thu, 8 Apr 2021 02:44:10 +0000 (19:44 -0700)]
use a stronger type to squash a -Wconversion warning
Matthew Fernandez [Thu, 8 Apr 2021 02:42:25 +0000 (19:42 -0700)]
remove unused parameter route_list from assignTracks
Matthew Fernandez [Thu, 8 Apr 2021 02:41:33 +0000 (19:41 -0700)]
remove unused parameter nrtes from assignTracks
Matthew Fernandez [Sat, 17 Apr 2021 21:01:28 +0000 (21:01 +0000)]
Merge branch 'smattr/
CC513531-8BFC-4587-8816-
4E41C4672694' into 'main'
some clean up of sfextern.c
See merge request graphviz/graphviz!1888
Matthew Fernandez [Tue, 6 Apr 2021 02:56:19 +0000 (19:56 -0700)]
swap some use of hand rolled NIL for the standard NULL
Matthew Fernandez [Tue, 6 Apr 2021 02:52:23 +0000 (19:52 -0700)]
remove unnecessary global initialization
This structure is default-0-initialized.