Comments (5)
After looking through the array.c
file I notices another thing. When expanding the array, it is checked whether an overflow happens on increasing the capacity:
size_t new_capacity = ar->capacity * ar->exp_factor;
/* As long as the capacity is greater that the expansion factor
* at the point of overflow, this is check is valid. */
if (new_capacity <= ar->capacity)
ar->capacity = CC_MAX_ELEMENTS;
else
ar->capacity = new_capacity;
But afterwards the variable new_capacity
, which might contain an invalid value in case of an overflow, is used for the allocation of the new buffer:
void **new_buff = ar->mem_alloc(new_capacity * sizeof(void*));
from collections-c.
Hi, I just looked through my open issues and came across this one. Should I open a quick PR to fix both things and to close the issue?
from collections-c.
@flyxi121
It's definitely not by design. It should have been updated when ARCH_64
was added, but apparently it was overlooked. Thanks for spotting it!
from collections-c.
Yep, that's also a bug. It should be:
void **new_buff = ar->mem_alloc(ar->capacity * sizeof(void*));
Again, thanks for eyeballing the code. These things are near impossible to catch with tests. :)
from collections-c.
@fhilgers
Sure, that would be awesome!
from collections-c.
Related Issues (20)
- How about adding AVL or Red Black tree data structure? HOT 4
- PQueue heap-overflow HOT 1
- deque_remove_at error
- cc_array_reverse() fails when element count is even HOT 1
- Implementation error in `cc_array_reverse` and `cc_deque_reverse`
- cmake configuration failed on latest MSYS2 HOT 1
- document is inaccurate about key_compare function
- Is "stdio.h" necessary? HOT 1
- The call to mem_alloc in cc_array_subarray() is unsafe
- How about adding Bloom Filter data structure? HOT 2
- cc_list.c (index > list1->size)maybe is wrong
- file: cc_list.c function:static INLINE void merge(……) HOT 1
- File: cc_list.c Function: cc_list_iter_add
- Feature Request: provide release versioning HOT 1
- RFC: Distro specific packages HOT 1
- What happened to macros such as: DEQUE_FOREACH? HOT 1
- when make occurs error HOT 1
- Segfault when calling tree_min or tree_max with a sentinel node
- Treetable: Segfault when calling get_successor_node on root if it is the greatest key HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from collections-c.