Created
November 21, 2023 13:35
-
-
Save zolex/ec54bb9cf33c46633a9550152892cac8 to your computer and use it in GitHub Desktop.
memcache 3.0.8 faulty inline patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -ru a/memcache_pool.c b/memcache_pool.c | |
--- a/memcache_pool.c | |
+++ b/memcache_pool.c | |
@@ -40,7 +40,7 @@ | |
ZEND_DECLARE_MODULE_GLOBALS(memcache) | |
-inline void mmc_buffer_alloc(mmc_buffer_t *buffer, unsigned int size) /* | |
+void mmc_buffer_alloc(mmc_buffer_t *buffer, unsigned int size) /* | |
ensures space for an additional size bytes {{{ */ | |
{ | |
register size_t newlen; | |
@@ -48,7 +48,7 @@ | |
} | |
/* }}} */ | |
-inline void mmc_buffer_free(mmc_buffer_t *buffer) /* {{{ */ | |
+void mmc_buffer_free(mmc_buffer_t *buffer) /* {{{ */ | |
{ | |
if (buffer->value.c != NULL) { | |
smart_str_free(&(buffer->value)); | |
@@ -1677,7 +1677,7 @@ | |
} | |
/* }}} */ | |
-inline int mmc_prepare_key_ex(const char *key, unsigned int key_len, char *result, unsigned int *result_len) /* {{{ */ | |
+int mmc_prepare_key_ex(const char *key, unsigned int key_len, char *result, unsigned int *result_len) /* {{{ */ | |
{ | |
unsigned int i; | |
if (key_len == 0) { | |
@@ -1695,7 +1695,7 @@ | |
} | |
/* }}} */ | |
-inline int mmc_prepare_key(zval *key, char *result, unsigned int *result_len) /* {{{ */ | |
+int mmc_prepare_key(zval *key, char *result, unsigned int *result_len) /* {{{ */ | |
{ | |
if (Z_TYPE_P(key) == IS_STRING) { | |
return mmc_prepare_key_ex(Z_STRVAL_P(key), Z_STRLEN_P(key), result, result_len); | |
diff -ru a/memcache_pool.h b/memcache_pool.h | |
--- a/memcache_pool.h | |
+++ b/memcache_pool.h | |
@@ -129,8 +129,8 @@ | |
#define mmc_buffer_release(b) memset((b), 0, sizeof(*(b))) | |
#define mmc_buffer_reset(b) (b)->value.len = (b)->idx = 0 | |
-inline void mmc_buffer_alloc(mmc_buffer_t *, unsigned int); | |
-inline void mmc_buffer_free(mmc_buffer_t *); | |
+void mmc_buffer_alloc(mmc_buffer_t *, unsigned int); | |
+void mmc_buffer_free(mmc_buffer_t *); | |
/* stream handlers */ | |
typedef struct mmc_stream mmc_stream_t; | |
@@ -385,8 +385,8 @@ | |
double timeval_to_double(struct timeval tv); | |
struct timeval double_to_timeval(double sec); | |
-inline int mmc_prepare_key_ex(const char *, unsigned int, char *, unsigned int *); | |
-inline int mmc_prepare_key(zval *, char *, unsigned int *); | |
+int mmc_prepare_key_ex(const char *, unsigned int, char *, unsigned int *); | |
+int mmc_prepare_key(zval *, char *, unsigned int *); | |
#define mmc_str_left(h, n, hlen, nlen) ((hlen) >= (nlen) ? memcmp((h), (n), (nlen)) == 0 : 0) | |
diff -ru a/memcache_queue.c b/memcache_queue.c | |
--- a/memcache_queue.c | |
+++ b/memcache_queue.c | |
@@ -26,7 +26,7 @@ | |
#include "php.h" | |
#include "memcache_queue.h" | |
-MMC_QUEUE_INLINE void mmc_queue_push(mmc_queue_t *queue, void *ptr) { | |
+void mmc_queue_push(mmc_queue_t *queue, void *ptr) { | |
if (mmc_queue_contains(queue, ptr)) return; | |
if (queue->len >= queue->alloc) { | |
@@ -53,7 +53,7 @@ | |
queue->len++; | |
} | |
-MMC_QUEUE_INLINE void *mmc_queue_pop(mmc_queue_t *queue) { | |
+void *mmc_queue_pop(mmc_queue_t *queue) { | |
if (queue->len) { | |
void *ptr; | |
@@ -73,7 +73,7 @@ | |
return NULL; | |
} | |
-MMC_QUEUE_INLINE int mmc_queue_contains(mmc_queue_t *queue, void *ptr) { | |
+int mmc_queue_contains(mmc_queue_t *queue, void *ptr) { | |
if (queue != NULL) { | |
int i; | |
@@ -87,14 +87,14 @@ | |
return 0; | |
} | |
-MMC_QUEUE_INLINE void mmc_queue_free(mmc_queue_t *queue) { | |
+void mmc_queue_free(mmc_queue_t *queue) { | |
if (queue->items != NULL) { | |
efree(queue->items); | |
} | |
memset(queue, 0, sizeof(*queue)); | |
} | |
-MMC_QUEUE_INLINE void mmc_queue_copy(mmc_queue_t *target, mmc_queue_t *source) { | |
+void mmc_queue_copy(mmc_queue_t *target, mmc_queue_t *source) { | |
if (target->alloc != source->alloc) { | |
target->alloc = source->alloc; | |
target->items = erealloc(target->items, sizeof(*target->items) * target->alloc); | |
@@ -106,7 +106,7 @@ | |
target->len = source->len; | |
} | |
-MMC_QUEUE_INLINE void mmc_queue_remove(mmc_queue_t *queue, void *ptr) { | |
+void mmc_queue_remove(mmc_queue_t *queue, void *ptr) { | |
void *item; | |
mmc_queue_t original = *queue; | |
mmc_queue_release(queue); | |
diff -ru a/memcache_queue.h b/memcache_queue.h | |
--- a/memcache_queue.h | |
+++ b/memcache_queue.h | |
@@ -43,12 +43,12 @@ | |
#define MMC_QUEUE_INLINE inline | |
#endif | |
-MMC_QUEUE_INLINE void mmc_queue_push(mmc_queue_t *, void *); | |
-MMC_QUEUE_INLINE void *mmc_queue_pop(mmc_queue_t *); | |
-MMC_QUEUE_INLINE int mmc_queue_contains(mmc_queue_t *, void *); | |
-MMC_QUEUE_INLINE void mmc_queue_free(mmc_queue_t *); | |
-MMC_QUEUE_INLINE void mmc_queue_copy(mmc_queue_t *, mmc_queue_t *); | |
-MMC_QUEUE_INLINE void mmc_queue_remove(mmc_queue_t *, void *); | |
+extern void mmc_queue_push(mmc_queue_t *, void *); | |
+extern void *mmc_queue_pop(mmc_queue_t *); | |
+extern int mmc_queue_contains(mmc_queue_t *, void *); | |
+extern void mmc_queue_free(mmc_queue_t *); | |
+extern void mmc_queue_copy(mmc_queue_t *, mmc_queue_t *); | |
+extern void mmc_queue_remove(mmc_queue_t *, void *); | |
#endif /*MEMCACHE_QUEUE_H_*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment