mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-08-08 09:01:48 +02:00
Update MaxmindDB to current git.
This commit is contained in:
29
vendor/MaxmindDB/src/data-pool.c
vendored
29
vendor/MaxmindDB/src/data-pool.c
vendored
@@ -9,8 +9,7 @@ static bool can_multiply(size_t const, size_t const, size_t const);
|
||||
|
||||
// Allocate an MMDB_data_pool_s. It initially has space for size
|
||||
// MMDB_entry_data_list_s structs.
|
||||
MMDB_data_pool_s *data_pool_new(size_t const size)
|
||||
{
|
||||
MMDB_data_pool_s *data_pool_new(size_t const size) {
|
||||
MMDB_data_pool_s *const pool = calloc(1, sizeof(MMDB_data_pool_s));
|
||||
if (!pool) {
|
||||
return NULL;
|
||||
@@ -40,8 +39,7 @@ MMDB_data_pool_s *data_pool_new(size_t const size)
|
||||
// the given max. max will typically be SIZE_MAX.
|
||||
//
|
||||
// We want to know if we'll wrap around.
|
||||
static bool can_multiply(size_t const max, size_t const m, size_t const n)
|
||||
{
|
||||
static bool can_multiply(size_t const max, size_t const m, size_t const n) {
|
||||
if (m == 0) {
|
||||
return false;
|
||||
}
|
||||
@@ -50,8 +48,7 @@ static bool can_multiply(size_t const max, size_t const m, size_t const n)
|
||||
}
|
||||
|
||||
// Clean up the data pool.
|
||||
void data_pool_destroy(MMDB_data_pool_s *const pool)
|
||||
{
|
||||
void data_pool_destroy(MMDB_data_pool_s *const pool) {
|
||||
if (!pool) {
|
||||
return;
|
||||
}
|
||||
@@ -65,8 +62,7 @@ void data_pool_destroy(MMDB_data_pool_s *const pool)
|
||||
|
||||
// Claim a new struct from the pool. Doing this may cause the pool's size to
|
||||
// grow.
|
||||
MMDB_entry_data_list_s *data_pool_alloc(MMDB_data_pool_s *const pool)
|
||||
{
|
||||
MMDB_entry_data_list_s *data_pool_alloc(MMDB_data_pool_s *const pool) {
|
||||
if (!pool) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -115,8 +111,7 @@ MMDB_entry_data_list_s *data_pool_alloc(MMDB_data_pool_s *const pool)
|
||||
// Turn the structs in the array-like pool into a linked list.
|
||||
//
|
||||
// Before calling this function, the list isn't linked up.
|
||||
MMDB_entry_data_list_s *data_pool_to_list(MMDB_data_pool_s *const pool)
|
||||
{
|
||||
MMDB_entry_data_list_s *data_pool_to_list(MMDB_data_pool_s *const pool) {
|
||||
if (!pool) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -154,22 +149,16 @@ MMDB_entry_data_list_s *data_pool_to_list(MMDB_data_pool_s *const pool)
|
||||
|
||||
static void test_can_multiply(void);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int main(void) {
|
||||
plan(NO_PLAN);
|
||||
test_can_multiply();
|
||||
done_testing();
|
||||
}
|
||||
|
||||
static void test_can_multiply(void)
|
||||
{
|
||||
{
|
||||
ok(can_multiply(SIZE_MAX, 1, SIZE_MAX), "1*SIZE_MAX is ok");
|
||||
}
|
||||
static void test_can_multiply(void) {
|
||||
{ ok(can_multiply(SIZE_MAX, 1, SIZE_MAX), "1*SIZE_MAX is ok"); }
|
||||
|
||||
{
|
||||
ok(!can_multiply(SIZE_MAX, 2, SIZE_MAX), "2*SIZE_MAX is not ok");
|
||||
}
|
||||
{ ok(!can_multiply(SIZE_MAX, 2, SIZE_MAX), "2*SIZE_MAX is not ok"); }
|
||||
|
||||
{
|
||||
ok(can_multiply(SIZE_MAX, 10240, sizeof(MMDB_entry_data_list_s)),
|
||||
|
93
vendor/MaxmindDB/src/maxminddb-compat-util.h
vendored
93
vendor/MaxmindDB/src/maxminddb-compat-util.h
vendored
@@ -43,32 +43,31 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
static void *
|
||||
mmdb_memmem(const void *l, size_t l_len, const void *s, size_t s_len)
|
||||
{
|
||||
register char *cur, *last;
|
||||
const char *cl = (const char *)l;
|
||||
const char *cs = (const char *)s;
|
||||
mmdb_memmem(const void *l, size_t l_len, const void *s, size_t s_len) {
|
||||
register char *cur, *last;
|
||||
const char *cl = (const char *)l;
|
||||
const char *cs = (const char *)s;
|
||||
|
||||
/* we need something to compare */
|
||||
if (l_len == 0 || s_len == 0)
|
||||
return NULL;
|
||||
/* we need something to compare */
|
||||
if (l_len == 0 || s_len == 0)
|
||||
return NULL;
|
||||
|
||||
/* "s" must be smaller or equal to "l" */
|
||||
if (l_len < s_len)
|
||||
return NULL;
|
||||
/* "s" must be smaller or equal to "l" */
|
||||
if (l_len < s_len)
|
||||
return NULL;
|
||||
|
||||
/* special case where s_len == 1 */
|
||||
if (s_len == 1)
|
||||
return memchr(l, (int)*cs, l_len);
|
||||
/* special case where s_len == 1 */
|
||||
if (s_len == 1)
|
||||
return memchr(l, (int)*cs, l_len);
|
||||
|
||||
/* the last position where its possible to find "s" in "l" */
|
||||
last = (char *)cl + l_len - s_len;
|
||||
/* the last position where its possible to find "s" in "l" */
|
||||
last = (char *)cl + l_len - s_len;
|
||||
|
||||
for (cur = (char *)cl; cur <= last; cur++)
|
||||
if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0)
|
||||
return cur;
|
||||
for (cur = (char *)cl; cur <= last; cur++)
|
||||
if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0)
|
||||
return cur;
|
||||
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Applies to strnlen implementation */
|
||||
@@ -97,16 +96,14 @@ mmdb_memmem(const void *l, size_t l_len, const void *s, size_t s_len)
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
static size_t
|
||||
mmdb_strnlen(const char *s, size_t maxlen)
|
||||
{
|
||||
size_t len;
|
||||
static size_t mmdb_strnlen(const char *s, size_t maxlen) {
|
||||
size_t len;
|
||||
|
||||
for (len = 0; len < maxlen; len++, s++) {
|
||||
if (!*s)
|
||||
break;
|
||||
}
|
||||
return (len);
|
||||
for (len = 0; len < maxlen; len++, s++) {
|
||||
if (!*s)
|
||||
break;
|
||||
}
|
||||
return (len);
|
||||
}
|
||||
|
||||
/* Applies to strdup and strndup implementation */
|
||||
@@ -138,30 +135,26 @@ mmdb_strnlen(const char *s, size_t maxlen)
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
static char *
|
||||
mmdb_strdup(const char *str)
|
||||
{
|
||||
size_t len;
|
||||
char *copy;
|
||||
static char *mmdb_strdup(const char *str) {
|
||||
size_t len;
|
||||
char *copy;
|
||||
|
||||
len = strlen(str) + 1;
|
||||
if ((copy = malloc(len)) == NULL)
|
||||
return (NULL);
|
||||
memcpy(copy, str, len);
|
||||
return (copy);
|
||||
len = strlen(str) + 1;
|
||||
if ((copy = malloc(len)) == NULL)
|
||||
return (NULL);
|
||||
memcpy(copy, str, len);
|
||||
return (copy);
|
||||
}
|
||||
|
||||
static char *
|
||||
mmdb_strndup(const char *str, size_t n)
|
||||
{
|
||||
size_t len;
|
||||
char *copy;
|
||||
static char *mmdb_strndup(const char *str, size_t n) {
|
||||
size_t len;
|
||||
char *copy;
|
||||
|
||||
len = mmdb_strnlen(str, n);
|
||||
if ((copy = malloc(len + 1)) == NULL)
|
||||
return (NULL);
|
||||
memcpy(copy, str, len);
|
||||
copy[len] = '\0';
|
||||
return (copy);
|
||||
len = mmdb_strnlen(str, n);
|
||||
if ((copy = malloc(len + 1)) == NULL)
|
||||
return (NULL);
|
||||
memcpy(copy, str, len);
|
||||
copy[len] = '\0';
|
||||
return (copy);
|
||||
}
|
||||
/* *INDENT-ON* */
|
||||
|
1175
vendor/MaxmindDB/src/maxminddb.c
vendored
1175
vendor/MaxmindDB/src/maxminddb.c
vendored
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user