Building net/ifdepd with clang and lld 13 results in a few warnings, and
a link error:
cc -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -Wall -Wnested-externs -Wpointer-arith -Winline -Wcast-qual -Wredundant-decls -c ifdepd.c -o ifdepd.o
ifdepd.c:420:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
free(d_ints);
^
ifdepd.c:418:2: note: previous statement is here
if (D)
^
ifdepd.c:434:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
free(s_ints);
^
ifdepd.c:432:2: note: previous statement is here
if (S)
^
2 warnings generated.
cc -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -Wall -Wnested-externs -Wpointer-arith -Winline -Wcast-qual -Wredundant-decls -o ifdepd ifdepd.o
ld: error: undefined symbol: cleanup
>>> referenced by ifdepd.c
>>> ifdepd.o:(main)
>>> referenced by ifdepd.c
>>> ifdepd.o:(main)
>>> referenced by ifdepd.c
>>> ifdepd.o:(main)
>>> referenced 1 more times
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1
The warnings about misleading indentation are indicating an actual bug,
which can be fixed by adding a few braces. The link error is because
ifdepd uses an inline function without either a static or an extern
specifier. Fix this by adding a static specifier.
Approved by: alex@hugo.bmg.gv.at (maintainer)
PR: 258512
MFH: 2021Q3
45 lines
957 B
C
45 lines
957 B
C
--- ifdepd.c.orig 2011-04-12 13:24:48 UTC
|
|
+++ ifdepd.c
|
|
@@ -188,7 +188,7 @@ void int_down(int_name if_name) {
|
|
}
|
|
}
|
|
|
|
-inline void cleanup() {
|
|
+static inline void cleanup() {
|
|
if (s_opt != NULL)
|
|
free(s_opt);
|
|
if (d_opt != NULL)
|
|
@@ -204,7 +204,7 @@ void usage(const char *progname) {
|
|
progname);
|
|
}
|
|
|
|
-inline int del_count(const char *s, const char d) {
|
|
+static inline int del_count(const char *s, const char d) {
|
|
int cnt=0, a;
|
|
for (a=0; s[a] != '\0'; a++)
|
|
if (s[a] == d)
|
|
@@ -415,9 +415,10 @@ int main(int argc, char *argv[]) {
|
|
if (!ints_exists(s_ints, s_cnt)) {
|
|
free(s_opt);
|
|
free(s_ints);
|
|
- if (D)
|
|
+ if (D) {
|
|
free(d_opt);
|
|
free(d_ints);
|
|
+ }
|
|
exit(1);
|
|
}
|
|
break;
|
|
@@ -429,9 +430,10 @@ int main(int argc, char *argv[]) {
|
|
if (!ints_exists(d_ints, d_cnt)) {
|
|
free(d_opt);
|
|
free(d_ints);
|
|
- if (S)
|
|
+ if (S) {
|
|
free(s_opt);
|
|
free(s_ints);
|
|
+ }
|
|
exit(1);
|
|
}
|
|
break;
|