mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 13:52:17 +00:00
CMakefile: add -Wstrict-aliasing=2 and fix warnings
Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
This commit is contained in:
parent
2fcf9c8273
commit
0b2c406187
@ -57,7 +57,7 @@ IF (MSVC)
|
|||||||
SET(CMAKE_C_FLAGS_DEBUG "/Od /DEBUG /MTd")
|
SET(CMAKE_C_FLAGS_DEBUG "/Od /DEBUG /MTd")
|
||||||
SET(CMAKE_C_FLAGS_RELEASE "/MT /O2")
|
SET(CMAKE_C_FLAGS_RELEASE "/MT /O2")
|
||||||
ELSE ()
|
ELSE ()
|
||||||
SET(CMAKE_C_FLAGS "-O2 -g -Wall -Wextra")
|
SET(CMAKE_C_FLAGS "-O2 -g -Wall -Wextra -Wstrict-aliasing=2")
|
||||||
IF (NOT MINGW) # MinGW always does PIC and complains if we tell it to
|
IF (NOT MINGW) # MinGW always does PIC and complains if we tell it to
|
||||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
12
src/cache.c
12
src/cache.c
@ -76,12 +76,12 @@ void git_cache_free(git_cache *cache)
|
|||||||
|
|
||||||
void *git_cache_get(git_cache *cache, const git_oid *oid)
|
void *git_cache_get(git_cache *cache, const git_oid *oid)
|
||||||
{
|
{
|
||||||
const uint32_t *hash;
|
uint32_t hash;
|
||||||
cache_node *node = NULL;
|
cache_node *node = NULL;
|
||||||
void *result = NULL;
|
void *result = NULL;
|
||||||
|
|
||||||
hash = (const uint32_t *)oid->id;
|
memcpy(&hash, oid->id, sizeof(hash));
|
||||||
node = &cache->nodes[hash[0] & cache->size_mask];
|
node = &cache->nodes[hash & cache->size_mask];
|
||||||
|
|
||||||
git_mutex_lock(&node->lock);
|
git_mutex_lock(&node->lock);
|
||||||
{
|
{
|
||||||
@ -97,13 +97,13 @@ void *git_cache_get(git_cache *cache, const git_oid *oid)
|
|||||||
|
|
||||||
void *git_cache_try_store(git_cache *cache, void *entry)
|
void *git_cache_try_store(git_cache *cache, void *entry)
|
||||||
{
|
{
|
||||||
const uint32_t *hash;
|
uint32_t hash;
|
||||||
const git_oid *oid;
|
const git_oid *oid;
|
||||||
cache_node *node = NULL;
|
cache_node *node = NULL;
|
||||||
|
|
||||||
oid = &((git_cached_obj*)entry)->oid;
|
oid = &((git_cached_obj*)entry)->oid;
|
||||||
hash = (const uint32_t *)oid->id;
|
memcpy(&hash, oid->id, sizeof(hash));
|
||||||
node = &cache->nodes[hash[0] & cache->size_mask];
|
node = &cache->nodes[hash & cache->size_mask];
|
||||||
|
|
||||||
/* increase the refcount on this object, because
|
/* increase the refcount on this object, because
|
||||||
* the cache now owns it */
|
* the cache now owns it */
|
||||||
|
@ -175,6 +175,7 @@ static int tree_parse_buffer(git_tree *tree, const char *buffer, const char *buf
|
|||||||
|
|
||||||
while (buffer < buffer_end) {
|
while (buffer < buffer_end) {
|
||||||
git_tree_entry *entry;
|
git_tree_entry *entry;
|
||||||
|
long tmp;
|
||||||
|
|
||||||
entry = git__calloc(1, sizeof(git_tree_entry));
|
entry = git__calloc(1, sizeof(git_tree_entry));
|
||||||
if (entry == NULL) {
|
if (entry == NULL) {
|
||||||
@ -185,8 +186,10 @@ static int tree_parse_buffer(git_tree *tree, const char *buffer, const char *buf
|
|||||||
if (git_vector_insert(&tree->entries, entry) < GIT_SUCCESS)
|
if (git_vector_insert(&tree->entries, entry) < GIT_SUCCESS)
|
||||||
return GIT_ENOMEM;
|
return GIT_ENOMEM;
|
||||||
|
|
||||||
if (git__strtol32((long *)&entry->attr, buffer, &buffer, 8) < GIT_SUCCESS)
|
if (git__strtol32(&tmp, buffer, &buffer, 8) < GIT_SUCCESS ||
|
||||||
|
!buffer || tmp > UINT_MAX || tmp < 0)
|
||||||
return git__throw(GIT_EOBJCORRUPTED, "Failed to parse tree. Can't parse attributes");
|
return git__throw(GIT_EOBJCORRUPTED, "Failed to parse tree. Can't parse attributes");
|
||||||
|
entry->attr = tmp;
|
||||||
|
|
||||||
if (*buffer++ != ' ') {
|
if (*buffer++ != ' ') {
|
||||||
error = git__throw(GIT_EOBJCORRUPTED, "Failed to parse tree. Object it corrupted");
|
error = git__throw(GIT_EOBJCORRUPTED, "Failed to parse tree. Object it corrupted");
|
||||||
|
Loading…
Reference in New Issue
Block a user