diff options
| author | Paul Eggert | 2025-04-19 18:44:52 -0700 |
|---|---|---|
| committer | Paul Eggert | 2025-04-19 19:31:26 -0700 |
| commit | c8eed90eb4d0583dc3463edfad176b9d3f98d11f (patch) | |
| tree | 2fb288a90f4dd07d3d08c43bbb63feced72189de /src/json.c | |
| parent | 71ee484cac3e0e5b68f006b4cca81c13ca6ce11e (diff) | |
| download | emacs-c8eed90eb4d0583dc3463edfad176b9d3f98d11f.tar.gz emacs-c8eed90eb4d0583dc3463edfad176b9d3f98d11f.zip | |
Avoid name clashes with static GnuTLS
Work around a bug in GnuTLS 3.7.11 and earlier: when built
statically, its mistakenly exports symbols hash_lookup and
hash_string, which collide with Emacs symbols of the same name,
preventing temacs from linking statically. Problem reported by
Greg A. Woods (Bug#77476).
Because GnuTLS never uses hash_lookup or hash_string this issue
ordinarily doesn’t seem to prevent temacs from linking to GnuTLS
on GNU/Linux, as it’s linked dynamically and the dynamic linker
never needs to resolve references to either symbol. However, I
suppose a clash or bug could occur even with dynamic linking if
Emacs later loads a module that uses either symbol.
Although GnuTLS should be fixed, Emacs should link statically to
current and older GnuTLS versions in the meantime, and it should
avoid potential problems with dynamic linking. Renaming the two
clashing names is an easy way to do this. For consistency with
the new name for hash_lookup, also rename hash_lookup_with_hash
and hash_lookup_get_hash.
* src/fns.c (hash_find_with_hash): Rename from hash_lookup_with_hash.
(hash_find): Rename from hash_lookup.
(hash_find_get_hash): Rename from hash_lookup_get_hash.
(hash_char_array): Rename from hash_string.
All uses changed.
Diffstat (limited to 'src/json.c')
| -rw-r--r-- | src/json.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/json.c b/src/json.c index 5795c582ce0..beac242b709 100644 --- a/src/json.c +++ b/src/json.c | |||
| @@ -1571,7 +1571,7 @@ json_parse_object (struct json_parser *parser) | |||
| 1571 | hash_hash_t hash; | 1571 | hash_hash_t hash; |
| 1572 | Lisp_Object key = parser->object_workspace[i]; | 1572 | Lisp_Object key = parser->object_workspace[i]; |
| 1573 | Lisp_Object value = parser->object_workspace[i + 1]; | 1573 | Lisp_Object value = parser->object_workspace[i + 1]; |
| 1574 | ptrdiff_t i = hash_lookup_get_hash (h, key, &hash); | 1574 | ptrdiff_t i = hash_find_get_hash (h, key, &hash); |
| 1575 | if (i < 0) | 1575 | if (i < 0) |
| 1576 | hash_put (h, key, value, hash); | 1576 | hash_put (h, key, value, hash); |
| 1577 | else | 1577 | else |