diff --git a/src/growbag.c b/src/growbag.c index bc2c5f0..926c3c0 100644 --- a/src/growbag.c +++ b/src/growbag.c @@ -42,6 +42,7 @@ struct gbag_t char * b; char * n; char * ni; + char * no; gbag_recycle rc; gbag_moved mv; }; @@ -57,6 +58,7 @@ gbag_new(gbag_t **out, size_t count, size_t size, gb->b = (char*) calloc(gb->max, gb->z); gb->n = gb->b; gb->ni = gb->b; + gb->no = (char*) calloc(1, size); gb->rc = recycle; gb->mv = moved; *out = gb; @@ -76,6 +78,7 @@ gbag_free(gbag_t *gb) } } free(gb->b); + free(gb->no); gb->max = 0; gb->ref = 0; gb->b = NULL; @@ -89,11 +92,7 @@ gbag_free(gbag_t *gb) static inline int gbag_occupied(gbag_t *gb, char *el) { - char *s = el; - char *e = el + gb->z; - while (s < e) - if (*s++) return 1; - return 0; + return *el || memcmp(el, gb->no, gb->z); } void * diff --git a/src/pool.c b/src/pool.c index 5357e6a..26595d7 100644 --- a/src/pool.c +++ b/src/pool.c @@ -70,7 +70,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "uthash.h" #define MAX_LINE 8192 -#define CLIENTS_INIT 0x4000 +#define CLIENTS_INIT 8192 #define RPC_BODY_MAX 8192 #define JOB_BODY_MAX 8192 #define ERROR_BODY_MAX 512