http-parser icon indicating copy to clipboard operation
http-parser copied to clipboard

MSVC Error C2220: p hides prev. local declaration

Open lx-s opened this issue 7 years ago • 1 comments

MSVC build output (with /W4 and TreatWarningsAsErrors=Yes)

2>http_parser.c
2>c:\dev\...\http_parser\http_parser.c(2389,18): error C2220:  warning treated as error - no 'object' file generated
2>c:\dev\...\http_parser\http_parser.c(2389,18): error C2220:     const char* p;
2>c:\dev\...\http_parser\http_parser.c(2389,18): error C2220:                  ^
2>c:\dev\...\http_parser\http_parser.c(2389,18): warning C4456:  declaration of 'p' hides previous local declaration
2>c:\dev\...\http_parser\http_parser.c(2389,18): warning C4456:     const char* p;
2>c:\dev\...\http_parser\http_parser.c(2389,18): warning C4456:                  ^
2>c:\dev\...\http_parser\http_parser.c(2302,15): message :  see declaration of 'p'
2>c:\dev\...\http_parser\http_parser.c(2302,15): message :   const char *p;
2>c:\dev\...\http_parser\http_parser.c(2302,15): message :      

(Line numbers don't match with current master since I've noticed the build-error when using 2.8.1)

To fix this build-error I removed const char* p;-declaration as it is already declared right at

http_parser_parse_url(const char *buf, size_t buflen, int is_connect,
                      struct http_parser_url *u)
{
  enum state s;
  const char *p; // <-----

Since the removed const char* p within the if-statement is first used in line 2420 for (p= buf + off where it gets immediately assigned a new value, the removal should be completely harmless.

lx-s avatar Jul 19 '18 05:07 lx-s

Would be great to have this merged. I ran into the same problem using gcc with -Wshadow.

gatzka avatar Aug 20 '18 07:08 gatzka