diff --git a/CMakeLists.txt b/CMakeLists.txt index b505d758a..8ef35877e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,7 +53,7 @@ OPTION (BUILD_CLAY "Build Tests using the Clay suite" ON) # Platform specific compilation flags IF (MSVC) - SET(CMAKE_C_FLAGS "/W4 /WX /nologo /Zi") + SET(CMAKE_C_FLAGS "/W4 /WX /nologo /Zi /wd4127") IF (STDCALL) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Gz") ENDIF () diff --git a/deps/http-parser/http_parser.c b/deps/http-parser/http_parser.c index e905747a3..e9d42ce08 100644 --- a/deps/http-parser/http_parser.c +++ b/deps/http-parser/http_parser.c @@ -364,11 +364,13 @@ size_t http_parser_execute (http_parser *parser, char c, ch; int8_t unhex_val; const char *p = data, *pe; - int64_t to_read; + off_t to_read; enum state state; enum header_states header_state; uint64_t index = parser->index; uint64_t nread = parser->nread; + const char *header_field_mark, *header_value_mark, *url_mark; + const char *matcher; /* We're in an error state. Don't bother doing anything. */ if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { @@ -399,9 +401,9 @@ size_t http_parser_execute (http_parser *parser, /* technically we could combine all of these (except for url_mark) into one variable, saving stack space, but it seems more clear to have them separated. */ - const char *header_field_mark = 0; - const char *header_value_mark = 0; - const char *url_mark = 0; + header_field_mark = 0; + header_value_mark = 0; + url_mark = 0; if (state == s_header_field) header_field_mark = data; @@ -695,7 +697,7 @@ size_t http_parser_execute (http_parser *parser, goto error; } - const char *matcher = method_strings[parser->method]; + matcher = method_strings[parser->method]; if (ch == ' ' && matcher[index] == '\0') { state = s_req_spaces_before_url; } else if (ch == matcher[index]) { @@ -1576,7 +1578,7 @@ size_t http_parser_execute (http_parser *parser, } case s_body_identity: - to_read = MIN(pe - p, (int64_t)parser->content_length); + to_read = (off_t) MIN(pe - p, parser->content_length); if (to_read > 0) { if (settings->on_body) settings->on_body(parser, p, to_read); p += to_read - 1; @@ -1670,7 +1672,7 @@ size_t http_parser_execute (http_parser *parser, { assert(parser->flags & F_CHUNKED); - to_read = MIN(pe - p, (int64_t)(parser->content_length)); + to_read = (off_t) MIN(pe - p, parser->content_length); if (to_read > 0) { if (settings->on_body) settings->on_body(parser, p, to_read); @@ -1710,7 +1712,7 @@ size_t http_parser_execute (http_parser *parser, parser->state = state; parser->header_state = header_state; - parser->index = index; + parser->index = (unsigned char) index; parser->nread = nread; return len; diff --git a/src/transport-http.c b/src/transport-http.c index d111d5c38..70086adea 100644 --- a/src/transport-http.c +++ b/src/transport-http.c @@ -33,11 +33,11 @@ #include "buffer.h" #include "pkt.h" -typedef enum { +enum last_cb { NONE, FIELD, VALUE -} last_cb_type; +}; typedef struct { git_transport parent; @@ -48,8 +48,8 @@ typedef struct { int error; int transfer_finished :1, ct_found :1, - ct_finished :1, - last_cb :3; + ct_finished :1; + enum last_cb last_cb; char *content_type; char *service; } transport_http; @@ -75,10 +75,13 @@ static int gen_request(git_buf *buf, const char *url, const char *host, const ch static int do_connect(transport_http *t, const char *service) { - int s = -1, error;; - const char *url = t->parent.url, *prefix = "http://"; - char *host = NULL, *port = NULL; git_buf request = GIT_BUF_INIT; + int s = -1, error; + const char *url, *prefix; + char *host = NULL, *port = NULL; + + url = t->parent.url; + prefix = "http://"; if (!git__prefixcmp(url, prefix)) url += strlen(prefix);