Commit 800aa28
authored
The std::string_view convenience methods (Value(std::string_view),
getString, operator[], get, removeMember, isMember) were exported
symbols in 1.9.7 -- declared in value.h and defined out-of-line in
value.cpp. After 1.9.7 the #1661/#1675 ABI-mismatch fixes made them
header-only `inline`, which removed those symbols from the shared
library (e.g. Value::removeMember(std::string_view)), but SOVERSION
stayed at 27.
Removing exported symbols is an incompatible ABI change, so consumers
built against 1.9.7's libjsoncpp.so.27 fail to resolve those symbols
against later builds that still claim SONAME .so.27 (issue #1694: a
system jsoncpp upgrade broke cmake/NFS Ganesha with an undefined-symbol
error). Bump SOVERSION 27 -> 28 so the changed ABI gets a distinct
SONAME; affected consumers then get a clean rebuild requirement instead
of a symbol-lookup crash, and a rebuild against 1.10.0 uses the inline
methods (no symbol dependency).
The symbols are intentionally not restored: an exported std::string_view
symbol's presence depends on whether the library was compiled as C++17,
which is the mismatch #1661 fixed.
1 parent 22c7ec3 commit 800aa28
2 files changed
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | | - | |
| 64 | + | |
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | | - | |
| 54 | + | |
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| |||
0 commit comments