fixed multiple returning when doing mt compressing/decompressing

This commit is contained in:
Tino Reichardt
2016-12-30 17:48:12 +01:00
parent 62ccbe9d58
commit f4f2729f08
6 changed files with 19 additions and 14 deletions

View File

@@ -313,6 +313,7 @@ static void *pt_compress(void *arg)
size_t LZ4MT_compressCCtx(LZ4MT_CCtx * ctx, LZ4MT_RdWr_t * rdwr) size_t LZ4MT_compressCCtx(LZ4MT_CCtx * ctx, LZ4MT_RdWr_t * rdwr)
{ {
int t; int t;
void *retval_of_thread = 0;
if (!ctx) if (!ctx)
return ERROR(compressionParameter_unsupported); return ERROR(compressionParameter_unsupported);
@@ -335,7 +336,7 @@ size_t LZ4MT_compressCCtx(LZ4MT_CCtx * ctx, LZ4MT_RdWr_t * rdwr)
void *p; void *p;
pthread_join(w->pthread, &p); pthread_join(w->pthread, &p);
if (p) if (p)
return (size_t) p; retval_of_thread = p;
} }
/* clean up lists */ /* clean up lists */
@@ -349,7 +350,7 @@ size_t LZ4MT_compressCCtx(LZ4MT_CCtx * ctx, LZ4MT_RdWr_t * rdwr)
free(wl); free(wl);
} }
return 0; return (size_t)retval_of_thread;
} }
/* returns current uncompressed data size */ /* returns current uncompressed data size */

View File

@@ -485,6 +485,7 @@ size_t LZ4MT_decompressDCtx(LZ4MT_DCtx * ctx, LZ4MT_RdWr_t * rdwr)
int t, rv; int t, rv;
cwork_t *w = &ctx->cwork[0]; cwork_t *w = &ctx->cwork[0];
LZ4MT_Buffer *in = &w->in; LZ4MT_Buffer *in = &w->in;
void *retval_of_thread = 0;
if (!ctx) if (!ctx)
return ERROR(compressionParameter_unsupported); return ERROR(compressionParameter_unsupported);
@@ -544,7 +545,7 @@ size_t LZ4MT_decompressDCtx(LZ4MT_DCtx * ctx, LZ4MT_RdWr_t * rdwr)
void *p; void *p;
pthread_join(w->pthread, &p); pthread_join(w->pthread, &p);
if (p) if (p)
return (size_t) p; retval_of_thread = p;
} }
okay: okay:
@@ -559,7 +560,7 @@ size_t LZ4MT_decompressDCtx(LZ4MT_DCtx * ctx, LZ4MT_RdWr_t * rdwr)
free(wl); free(wl);
} }
return 0; return (size_t)retval_of_thread;
} }
/* returns current uncompressed data size */ /* returns current uncompressed data size */

View File

@@ -313,6 +313,7 @@ static void *pt_compress(void *arg)
size_t LZ5MT_compressCCtx(LZ5MT_CCtx * ctx, LZ5MT_RdWr_t * rdwr) size_t LZ5MT_compressCCtx(LZ5MT_CCtx * ctx, LZ5MT_RdWr_t * rdwr)
{ {
int t; int t;
void *retval_of_thread = 0;
if (!ctx) if (!ctx)
return ERROR(compressionParameter_unsupported); return ERROR(compressionParameter_unsupported);
@@ -335,7 +336,7 @@ size_t LZ5MT_compressCCtx(LZ5MT_CCtx * ctx, LZ5MT_RdWr_t * rdwr)
void *p; void *p;
pthread_join(w->pthread, &p); pthread_join(w->pthread, &p);
if (p) if (p)
return (size_t) p; retval_of_thread = p;
} }
/* clean up lists */ /* clean up lists */
@@ -349,7 +350,7 @@ size_t LZ5MT_compressCCtx(LZ5MT_CCtx * ctx, LZ5MT_RdWr_t * rdwr)
free(wl); free(wl);
} }
return 0; return (size_t)retval_of_thread;
} }
/* returns current uncompressed data size */ /* returns current uncompressed data size */

View File

@@ -485,6 +485,7 @@ size_t LZ5MT_decompressDCtx(LZ5MT_DCtx * ctx, LZ5MT_RdWr_t * rdwr)
int t, rv; int t, rv;
cwork_t *w = &ctx->cwork[0]; cwork_t *w = &ctx->cwork[0];
LZ5MT_Buffer *in = &w->in; LZ5MT_Buffer *in = &w->in;
void *retval_of_thread = 0;
if (!ctx) if (!ctx)
return ERROR(compressionParameter_unsupported); return ERROR(compressionParameter_unsupported);
@@ -544,7 +545,7 @@ size_t LZ5MT_decompressDCtx(LZ5MT_DCtx * ctx, LZ5MT_RdWr_t * rdwr)
void *p; void *p;
pthread_join(w->pthread, &p); pthread_join(w->pthread, &p);
if (p) if (p)
return (size_t) p; retval_of_thread = p;
} }
okay: okay:
@@ -559,7 +560,7 @@ size_t LZ5MT_decompressDCtx(LZ5MT_DCtx * ctx, LZ5MT_RdWr_t * rdwr)
free(wl); free(wl);
} }
return 0; return (size_t)retval_of_thread;
} }
/* returns current uncompressed data size */ /* returns current uncompressed data size */

View File

@@ -328,7 +328,7 @@ static void *pt_compress(void *arg)
size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx * ctx, ZSTDMT_RdWr_t * rdwr) size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx * ctx, ZSTDMT_RdWr_t * rdwr)
{ {
int t; int t;
void *rv = 0; void *retval_of_thread = 0;
if (!ctx) if (!ctx)
return ZSTDMT_ERROR(init_missing); return ZSTDMT_ERROR(init_missing);
@@ -358,7 +358,7 @@ size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx * ctx, ZSTDMT_RdWr_t * rdwr)
void *p; void *p;
pthread_join(w->pthread, &p); pthread_join(w->pthread, &p);
if (p) if (p)
rv = p; retval_of_thread = p;
} }
/* clean up the free list */ /* clean up the free list */
@@ -373,7 +373,7 @@ size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx * ctx, ZSTDMT_RdWr_t * rdwr)
} }
/* on error, these two lists may have some entries */ /* on error, these two lists may have some entries */
if (rv) { if (retval_of_thread) {
struct writelist *wl; struct writelist *wl;
struct list_head *entry; struct list_head *entry;
@@ -394,7 +394,7 @@ size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx * ctx, ZSTDMT_RdWr_t * rdwr)
} }
} }
return (size_t) rv; return (size_t)retval_of_thread;
} }
/* returns current uncompressed data size */ /* returns current uncompressed data size */

View File

@@ -697,6 +697,7 @@ size_t ZSTDMT_decompressDCtx(ZSTDMT_DCtx * ctx, ZSTDMT_RdWr_t * rdwr)
ZSTDMT_Buffer *in = &In; ZSTDMT_Buffer *in = &In;
cwork_t *w; cwork_t *w;
int t, rv, type = TYPE_UNKNOWN; int t, rv, type = TYPE_UNKNOWN;
void *retval_of_thread = 0;
if (!ctx) if (!ctx)
return ZSTDMT_ERROR(compressionParameter_unsupported); return ZSTDMT_ERROR(compressionParameter_unsupported);
@@ -819,7 +820,7 @@ size_t ZSTDMT_decompressDCtx(ZSTDMT_DCtx * ctx, ZSTDMT_RdWr_t * rdwr)
void *p; void *p;
pthread_join(w->pthread, &p); pthread_join(w->pthread, &p);
if (p) if (p)
return (size_t) p; retval_of_thread = p;
} }
/* clean up pthread stuff */ /* clean up pthread stuff */
@@ -838,7 +839,7 @@ size_t ZSTDMT_decompressDCtx(ZSTDMT_DCtx * ctx, ZSTDMT_RdWr_t * rdwr)
free(wl); free(wl);
} }
return 0; return (size_t)retval_of_thread;
} }
/* returns current uncompressed data size */ /* returns current uncompressed data size */