mirror of
https://github.com/curl/curl.git
synced 2026-07-28 01:33:11 +03:00
tool: use our own stderr variable
Earlier this year we changed our own stderr variable to use the standard name `stderr` (to avoid bugs where someone is using `stderr` instead of the curl-tool specific variable). This solution needed to override the standard `stderr` symbol via the preprocessor. This in turn didn't play well with unity builds and caused curl tool to crash or stay silent due to an uninitialized stderr. This was a hard to find issue, fixed by manually breaking out one file from the unity sources. To avoid two these two tricks, this patch implements a different solution: Restore using our own local variable for our stderr output and leave `stderr` as-is. To avoid using `stderr` by mistake, add a `checksrc` rule (based on logic we already used in lib for `strerror`) that detects any `stderr` use in `src` and points to using our own variable instead: `tool_stderr`. Follow-up to06133d3e9bFollow-up to2f17a9b654Closes #11958
This commit is contained in:
parent
b5bb84cbef
commit
e5bb88b8f8
19 changed files with 58 additions and 53 deletions
|
|
@ -50,6 +50,7 @@ my @ignore_line;
|
|||
my %warnings_extended = (
|
||||
'COPYRIGHTYEAR' => 'copyright year incorrect',
|
||||
'STRERROR', => 'strerror() detected',
|
||||
'STDERR', => 'stderr detected',
|
||||
);
|
||||
|
||||
my %warnings = (
|
||||
|
|
@ -729,6 +730,18 @@ sub scanfile {
|
|||
}
|
||||
}
|
||||
}
|
||||
if($warnings{"STDERR"}) {
|
||||
# scan for use of banned stderr. This is not a BANNEDFUNC to
|
||||
# allow for individual enable/disable of this warning.
|
||||
if($l =~ /^([^\"-]*\W)(stderr)[^\"_]/x) {
|
||||
if($1 !~ /^ *\#/) {
|
||||
# skip preprocessor lines
|
||||
checkwarn("STDERR",
|
||||
$line, length($1), $file, $ol,
|
||||
"use of $2 is banned (use tool_stderr instead)");
|
||||
}
|
||||
}
|
||||
}
|
||||
# scan for use of snprintf for curl-internals reasons
|
||||
if($l =~ /^(.*\W)(v?snprintf)\s*\(/x) {
|
||||
checkwarn("SNPRINTF",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue