diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2014-06-06 18:43:50 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2014-06-06 18:43:50 +0000 |
commit | 073a55ab1cfed2bd8dd7eec9a8aede82dcf91f19 (patch) | |
tree | 0d425d697b89d993f258434cb102062b85599480 /src/htscore.c | |
parent | 9ff2518be647832a7d3fe21b56bd268b9be3d4e3 (diff) |
Splitted typed arrays in htsarrays.h
Cleaned-up page generation
Diffstat (limited to 'src/htscore.c')
-rw-r--r-- | src/htscore.c | 52 |
1 files changed, 8 insertions, 44 deletions
diff --git a/src/htscore.c b/src/htscore.c index f6b8804..f315d3b 100644 --- a/src/htscore.c +++ b/src/htscore.c @@ -61,6 +61,9 @@ Please visit our Website: http://www.httrack.com /* Charset handling */ #include "htscharset.h" +/* Dynamic typed arrays */ +#include "htsarrays.h" + /* END specific definitions */ /* external modules */ @@ -157,47 +160,6 @@ RUN_CALLBACK0(opt, end); \ } while(0) #define XH_uninit do { XH_extuninit; if (r.adr) { freet(r.adr); r.adr=NULL; } } while(0) -// memory allocation assertion failure -static void hts_record_assert_memory_failed(const size_t size) { - fprintf(stderr, "memory allocation failed (%lu bytes)", \ - (long int) size); \ - assertf(! "memory allocation failed"); \ -} - -// Typed array -#define TypedArray(T) \ - struct { \ - T* elts; \ - size_t size; \ - size_t capa; \ - } -#define EMPTY_TYPED_ARRAY { NULL, 0, 0 } - -#define TypedArrayAdd(A, E) do { \ - if ((A).capa == (A).size) { \ - (A).capa = (A).capa < 16 ? 16 : (A).capa * 2; \ - (A).elts = realloct((A).elts, (A).capa*sizeof(*(A).elts)); \ - if ((A).elts == NULL) { \ - hts_record_assert_memory_failed((A).capa*sizeof(*(A).elts)); \ - } \ - } \ - assertf((A).size < (A).capa); \ - (A).elts[(A).size++] = (E); \ -} while(0) - -#define TypedArrayFree(A) do { \ - if ((A).elts != NULL) { \ - freet((A).elts); \ - (A).elts = NULL; \ - (A).capa = (A).size = 0; \ - } \ -} while(0) - -#define TypedArraySize(A) ((A).size) -#define TypedArrayCapa(A) ((A).capa) -#define TypedArrayElts(A) ((A).elts) -#define TypedArrayNth(A, N) (TypedArrayElts(A)[N]) - struct lien_buffers { /* Main array of pointers. This is the real "lien_url **liens" pointer base. */ @@ -282,9 +244,11 @@ static size_t hts_record_link_alloc(httrackp *opt) { // Create a new chunk of lien_url[] // There are references to item pointers, so we can not just realloc() if (liensbuf->lien_buffer_size == liensbuf->lien_buffer_capa) { - TypedArrayAdd(liensbuf->lien_buffers, liensbuf->lien_buffer); - liensbuf->lien_buffer_size = 0; - liensbuf->lien_buffer_capa = 0; + if (liensbuf->lien_buffer != NULL) { + TypedArrayAdd(liensbuf->lien_buffers, liensbuf->lien_buffer); + liensbuf->lien_buffer_size = 0; + liensbuf->lien_buffer_capa = 0; + } liensbuf->lien_buffer = (lien_url*) malloct(block_capa*sizeof(*liensbuf->lien_buffer)); if (liensbuf->lien_buffer == NULL) { |