Skip to content

Commit 2b219c9

Browse files
committed
Structs initialization
1 parent 0cbf842 commit 2b219c9

12 files changed

+92
-70
lines changed

src/ZstdSharp/Unsafe/Bitstream.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ private static nuint BIT_initDStream(BIT_DStream_t* bitD, void* srcBuffer, nuint
175175
{
176176
if (srcSize < 1)
177177
{
178-
memset(bitD, 0, (uint)sizeof(BIT_DStream_t));
178+
*bitD = new BIT_DStream_t();
179179
return unchecked((nuint)(-(int)ZSTD_ErrorCode.ZSTD_error_srcSize_wrong));
180180
}
181181

@@ -427,7 +427,7 @@ private static nuint BIT_initDStream(ref BIT_DStream_t bitD, void* srcBuffer, nu
427427
{
428428
if (srcSize < 1)
429429
{
430-
memset(ref bitD, 0, (uint)sizeof(BIT_DStream_t));
430+
bitD = new BIT_DStream_t();
431431
return unchecked((nuint)(-(int)ZSTD_ErrorCode.ZSTD_error_srcSize_wrong));
432432
}
433433

src/ZstdSharp/Unsafe/Cover.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private static void COVER_best_init(COVER_best_s* best)
132132
best->dict = null;
133133
best->dictSize = 0;
134134
best->compressedSize = unchecked((nuint)(-1));
135-
memset(&best->parameters, 0, (uint)sizeof(ZDICT_cover_params_t));
135+
best->parameters = new ZDICT_cover_params_t();
136136
}
137137

138138
/**

src/ZstdSharp/Unsafe/Fastcover.cs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -213,17 +213,19 @@ private static nuint FASTCOVER_ctx_init(FASTCOVER_ctx_t* ctx, void* samplesBuffe
213213
return unchecked((nuint)(-(int)ZSTD_ErrorCode.ZSTD_error_srcSize_wrong));
214214
}
215215

216-
memset(ctx, 0, (uint)sizeof(FASTCOVER_ctx_t));
217-
ctx->samples = samples;
218-
ctx->samplesSizes = samplesSizes;
219-
ctx->nbSamples = nbSamples;
220-
ctx->nbTrainSamples = nbTrainSamples;
221-
ctx->nbTestSamples = nbTestSamples;
222-
ctx->nbDmers = trainingSamplesSize - (d > sizeof(ulong) ? d : sizeof(ulong)) + 1;
223-
ctx->d = d;
224-
ctx->f = f;
225-
ctx->accelParams = accelParams;
226-
ctx->offsets = (nuint*)calloc(nbSamples + 1, (ulong)sizeof(nuint));
216+
*ctx = new FASTCOVER_ctx_t
217+
{
218+
samples = samples,
219+
samplesSizes = samplesSizes,
220+
nbSamples = nbSamples,
221+
nbTrainSamples = nbTrainSamples,
222+
nbTestSamples = nbTestSamples,
223+
nbDmers = trainingSamplesSize - (d > sizeof(ulong) ? d : sizeof(ulong)) + 1,
224+
d = d,
225+
f = f,
226+
accelParams = accelParams,
227+
offsets = (nuint*)calloc(nbSamples + 1, (ulong)sizeof(nuint))
228+
};
227229
if (ctx->offsets == null)
228230
{
229231
FASTCOVER_ctx_destroy(ctx);
@@ -388,7 +390,7 @@ public static nuint ZDICT_trainFromBuffer_fastCover(void* dictBuffer, nuint dict
388390
parameters.splitPoint = 1;
389391
parameters.f = parameters.f == 0 ? 20 : parameters.f;
390392
parameters.accel = parameters.accel == 0 ? 1 : parameters.accel;
391-
memset(&coverParams, 0, (uint)sizeof(ZDICT_cover_params_t));
393+
coverParams = new ZDICT_cover_params_t();
392394
FASTCOVER_convertToCoverParams(parameters, &coverParams);
393395
if (FASTCOVER_checkParameters(coverParams, dictBufferCapacity, parameters.f, parameters.accel) == 0)
394396
{
@@ -509,7 +511,7 @@ public static nuint ZDICT_optimizeTrainFromBuffer_fastCover(void* dictBuffer, nu
509511
}
510512

511513
COVER_best_init(&best);
512-
memset(&coverParams, 0, (uint)sizeof(ZDICT_cover_params_t));
514+
coverParams = new ZDICT_cover_params_t();
513515
FASTCOVER_convertToCoverParams(*parameters, &coverParams);
514516
accelParams = FASTCOVER_defaultAccelParameters[accel];
515517
g_displayLevel = displayLevel == 0 ? 0 : displayLevel - 1;

src/ZstdSharp/Unsafe/HufCompress.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,13 @@ private static HUF_CTableHeader HUF_readCTableHeader(nuint* ctable)
135135
private static void HUF_writeCTableHeader(nuint* ctable, uint tableLog, uint maxSymbolValue)
136136
{
137137
HUF_CTableHeader header;
138-
memset(&header, 0, (uint)sizeof(HUF_CTableHeader));
138+
header = new HUF_CTableHeader
139+
{
140+
tableLog = (byte)tableLog,
141+
maxSymbolValue = (byte)maxSymbolValue
142+
};
139143
assert(tableLog < 256);
140-
header.tableLog = (byte)tableLog;
141144
assert(maxSymbolValue < 256);
142-
header.maxSymbolValue = (byte)maxSymbolValue;
143145
memcpy(ctable, &header, (uint)sizeof(HUF_CTableHeader));
144146
}
145147

@@ -699,10 +701,12 @@ private static nuint HUF_compressBound(nuint size)
699701
*/
700702
private static nuint HUF_initCStream(HUF_CStream_t* bitC, void* startPtr, nuint dstCapacity)
701703
{
702-
memset(bitC, 0, (uint)sizeof(HUF_CStream_t));
703-
bitC->startPtr = (byte*)startPtr;
704-
bitC->ptr = bitC->startPtr;
705-
bitC->endPtr = bitC->startPtr + dstCapacity - sizeof(nuint);
704+
*bitC = new HUF_CStream_t
705+
{
706+
startPtr = (byte*)startPtr,
707+
ptr = (byte*)startPtr,
708+
endPtr = (byte*)startPtr + dstCapacity - sizeof(nuint)
709+
};
706710
if (dstCapacity <= (nuint)sizeof(nuint))
707711
return unchecked((nuint)(-(int)ZSTD_ErrorCode.ZSTD_error_dstSize_tooSmall));
708712
return 0;

src/ZstdSharp/Unsafe/Xxhash.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ private static void ZSTD_XXH32_copyState(XXH32_state_s* dstState, XXH32_state_s*
219219
/*! @ingroup XXH32_family */
220220
private static XXH_errorcode ZSTD_XXH32_reset(XXH32_state_s* statePtr, uint seed)
221221
{
222-
memset(statePtr, 0, (uint)sizeof(XXH32_state_s));
222+
*statePtr = new XXH32_state_s();
223223
statePtr->v[0] = seed + 0x9E3779B1U + 0x85EBCA77U;
224224
statePtr->v[1] = seed + 0x85EBCA77U;
225225
statePtr->v[2] = seed + 0;
@@ -493,7 +493,7 @@ private static void ZSTD_XXH64_copyState(XXH64_state_s* dstState, XXH64_state_s*
493493
/*! @ingroup XXH64_family */
494494
private static XXH_errorcode ZSTD_XXH64_reset(XXH64_state_s* statePtr, ulong seed)
495495
{
496-
memset(statePtr, 0, (uint)sizeof(XXH64_state_s));
496+
*statePtr = new XXH64_state_s();
497497
statePtr->v[0] = seed + 0x9E3779B185EBCA87UL + 0xC2B2AE3D27D4EB4FUL;
498498
statePtr->v[1] = seed + 0xC2B2AE3D27D4EB4FUL;
499499
statePtr->v[2] = seed + 0;

src/ZstdSharp/Unsafe/Zdict.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -482,17 +482,19 @@ private static nuint ZDICT_addEntropyTablesFromBuffer_advanced(void* dictBuffer,
482482
public static nuint ZDICT_trainFromBuffer(void* dictBuffer, nuint dictBufferCapacity, void* samplesBuffer, nuint* samplesSizes, uint nbSamples)
483483
{
484484
ZDICT_fastCover_params_t @params;
485-
memset(&@params, 0, (uint)sizeof(ZDICT_fastCover_params_t));
486-
@params.d = 8;
487-
@params.steps = 4;
485+
@params = new ZDICT_fastCover_params_t
486+
{
487+
d = 8,
488+
steps = 4
489+
};
488490
@params.zParams.compressionLevel = 3;
489491
return ZDICT_optimizeTrainFromBuffer_fastCover(dictBuffer, dictBufferCapacity, samplesBuffer, samplesSizes, nbSamples, &@params);
490492
}
491493

492494
public static nuint ZDICT_addEntropyTablesFromBuffer(void* dictBuffer, nuint dictContentSize, nuint dictBufferCapacity, void* samplesBuffer, nuint* samplesSizes, uint nbSamples)
493495
{
494496
ZDICT_params_t @params;
495-
memset(&@params, 0, (uint)sizeof(ZDICT_params_t));
497+
@params = new ZDICT_params_t();
496498
return ZDICT_addEntropyTablesFromBuffer_advanced(dictBuffer, dictContentSize, dictBufferCapacity, samplesBuffer, samplesSizes, nbSamples, @params);
497499
}
498500
}

src/ZstdSharp/Unsafe/ZstdCompress.cs

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ public static nuint ZSTD_compressBound(nuint srcSize)
3636
private static void ZSTD_initCCtx(ZSTD_CCtx_s* cctx, ZSTD_customMem memManager)
3737
{
3838
assert(cctx != null);
39-
memset(cctx, 0, (uint)sizeof(ZSTD_CCtx_s));
40-
cctx->customMem = memManager;
41-
cctx->bmi2 = 0;
39+
*cctx = new ZSTD_CCtx_s
40+
{
41+
customMem = memManager,
42+
bmi2 = 0
43+
};
4244
{
4345
nuint err = ZSTD_CCtx_reset(cctx, ZSTD_ResetDirective.ZSTD_reset_parameters);
4446
assert(!ERR_isError(err));
@@ -91,7 +93,7 @@ private static void ZSTD_initCCtx(ZSTD_CCtx_s* cctx, ZSTD_customMem memManager)
9193
cctx = (ZSTD_CCtx_s*)ZSTD_cwksp_reserve_object(&ws, (nuint)sizeof(ZSTD_CCtx_s));
9294
if (cctx == null)
9395
return null;
94-
memset(cctx, 0, (uint)sizeof(ZSTD_CCtx_s));
96+
*cctx = new ZSTD_CCtx_s();
9597
ZSTD_cwksp_move(&cctx->workspace, &ws);
9698
cctx->staticSize = workspaceSize;
9799
if (ZSTD_cwksp_check_available(&cctx->workspace, (nuint)((8 << 10) + 512 + sizeof(uint) * (52 + 2) + 2 * sizeof(ZSTD_compressedBlockState_t))) == 0)
@@ -110,8 +112,8 @@ private static void ZSTD_clearAllDicts(ZSTD_CCtx_s* cctx)
110112
{
111113
ZSTD_customFree(cctx->localDict.dictBuffer, cctx->customMem);
112114
ZSTD_freeCDict(cctx->localDict.cdict);
113-
memset(&cctx->localDict, 0, (uint)sizeof(ZSTD_localDict));
114-
memset(&cctx->prefixDict, 0, (uint)sizeof(ZSTD_prefixDict_s));
115+
cctx->localDict = new ZSTD_localDict();
116+
cctx->prefixDict = new ZSTD_prefixDict_s();
115117
cctx->cdict = null;
116118
}
117119

@@ -370,8 +372,10 @@ public static nuint ZSTD_CCtxParams_init(ZSTD_CCtx_params_s* cctxParams, int com
370372
return unchecked((nuint)(-(int)ZSTD_ErrorCode.ZSTD_error_GENERIC));
371373
}
372374

373-
memset(cctxParams, 0, (uint)sizeof(ZSTD_CCtx_params_s));
374-
cctxParams->compressionLevel = compressionLevel;
375+
*cctxParams = new ZSTD_CCtx_params_s
376+
{
377+
compressionLevel = compressionLevel
378+
};
375379
cctxParams->fParams.contentSizeFlag = 1;
376380
return 0;
377381
}
@@ -383,12 +387,14 @@ public static nuint ZSTD_CCtxParams_init(ZSTD_CCtx_params_s* cctxParams, int com
383387
private static void ZSTD_CCtxParams_init_internal(ZSTD_CCtx_params_s* cctxParams, ZSTD_parameters* @params, int compressionLevel)
384388
{
385389
assert(ZSTD_checkCParams(@params->cParams) == 0);
386-
memset(cctxParams, 0, (uint)sizeof(ZSTD_CCtx_params_s));
387-
cctxParams->cParams = @params->cParams;
388-
cctxParams->fParams = @params->fParams;
389-
cctxParams->compressionLevel = compressionLevel;
390-
cctxParams->useRowMatchFinder = ZSTD_resolveRowMatchFinderMode(cctxParams->useRowMatchFinder, &@params->cParams);
391-
cctxParams->useBlockSplitter = ZSTD_resolveBlockSplitterMode(cctxParams->useBlockSplitter, &@params->cParams);
390+
*cctxParams = new ZSTD_CCtx_params_s
391+
{
392+
cParams = @params->cParams,
393+
fParams = @params->fParams,
394+
compressionLevel = compressionLevel,
395+
useRowMatchFinder = ZSTD_resolveRowMatchFinderMode(cctxParams->useRowMatchFinder, &@params->cParams),
396+
useBlockSplitter = ZSTD_resolveBlockSplitterMode(cctxParams->useBlockSplitter, &@params->cParams)
397+
};
392398
cctxParams->ldmParams.enableLdm = ZSTD_resolveEnableLdm(cctxParams->ldmParams.enableLdm, &@params->cParams);
393399
cctxParams->validateSequences = ZSTD_resolveExternalSequenceValidation(cctxParams->validateSequences);
394400
cctxParams->maxBlockSize = ZSTD_resolveMaxBlockSize(cctxParams->maxBlockSize);
@@ -3234,7 +3240,7 @@ private static nuint ZSTD_postProcessSequenceProducerResult(ZSTD_Sequence* outSe
32343240

32353241
if (srcSize == 0)
32363242
{
3237-
memset(&outSeqs[0], 0, (uint)sizeof(ZSTD_Sequence));
3243+
outSeqs[0] = new ZSTD_Sequence();
32383244
return 1;
32393245
}
32403246

@@ -3250,7 +3256,7 @@ private static nuint ZSTD_postProcessSequenceProducerResult(ZSTD_Sequence* outSe
32503256
return unchecked((nuint)(-(int)ZSTD_ErrorCode.ZSTD_error_sequenceProducer_failed));
32513257
}
32523258

3253-
memset(&outSeqs[nbExternalSeqs], 0, (uint)sizeof(ZSTD_Sequence));
3259+
outSeqs[nbExternalSeqs] = new ZSTD_Sequence();
32543260
return nbExternalSeqs + 1;
32553261
}
32563262
}
@@ -4322,7 +4328,7 @@ private static nuint ZSTD_compressBlock_splitBlock_internal(ZSTD_CCtx_s* zc, voi
43224328
repcodes_s cRep;
43234329
memcpy(dRep.rep, zc->blockState.prevCBlock->rep, (uint)sizeof(repcodes_s));
43244330
memcpy(cRep.rep, zc->blockState.prevCBlock->rep, (uint)sizeof(repcodes_s));
4325-
memset(nextSeqStore, 0, (uint)sizeof(seqStore_t));
4331+
*nextSeqStore = new seqStore_t();
43264332
if (numSplits == 0)
43274333
{
43284334
nuint cSizeSingleBlock = ZSTD_compressSeqStore_singleBlock(zc, &zc->seqStore, &dRep, &cRep, op, dstCapacity, ip, blockSize, lastBlock, 0);
@@ -5677,7 +5683,7 @@ private static nuint ZSTD_initCDict_internal(ZSTD_CDict_s* cdict, void* dictBuff
56775683
public static ZSTD_CDict_s* ZSTD_createCDict_advanced(void* dictBuffer, nuint dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType, ZSTD_compressionParameters cParams, ZSTD_customMem customMem)
56785684
{
56795685
ZSTD_CCtx_params_s cctxParams;
5680-
memset(&cctxParams, 0, (uint)sizeof(ZSTD_CCtx_params_s));
5686+
cctxParams = new ZSTD_CCtx_params_s();
56815687
ZSTD_CCtxParams_init(&cctxParams, 0);
56825688
cctxParams.cParams = cParams;
56835689
cctxParams.customMem = customMem;
@@ -6618,7 +6624,7 @@ private static nuint ZSTD_CCtx_init_compressStream2(ZSTD_CCtx_s* cctx, ZSTD_EndD
66186624
}
66196625
}
66206626

6621-
memset(&cctx->prefixDict, 0, (uint)sizeof(ZSTD_prefixDict_s));
6627+
cctx->prefixDict = new ZSTD_prefixDict_s();
66226628
assert(prefixDict.dict == null || cctx->cdict == null);
66236629
if (cctx->cdict != null && cctx->localDict.cdict == null)
66246630
{
@@ -7715,8 +7721,10 @@ private static ZSTD_parameters ZSTD_getParams_internal(int compressionLevel, ulo
77157721
{
77167722
ZSTD_parameters @params;
77177723
ZSTD_compressionParameters cParams = ZSTD_getCParams_internal(compressionLevel, srcSizeHint, dictSize, mode);
7718-
memset(&@params, 0, (uint)sizeof(ZSTD_parameters));
7719-
@params.cParams = cParams;
7724+
@params = new ZSTD_parameters
7725+
{
7726+
cParams = cParams
7727+
};
77207728
@params.fParams.contentSizeFlag = 1;
77217729
return @params;
77227730
}

src/ZstdSharp/Unsafe/ZstdCompressInternal.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -936,13 +936,15 @@ private static void ZSTD_checkDictValidity(ZSTD_window_t* window, void* blockEnd
936936
[MethodImpl(MethodImplOptions.AggressiveInlining)]
937937
private static void ZSTD_window_init(ZSTD_window_t* window)
938938
{
939-
memset(window, 0, (uint)sizeof(ZSTD_window_t));
940-
window->@base = stringToByte_20_00;
941-
window->dictBase = stringToByte_20_00;
942-
window->dictLimit = 2;
943-
window->lowLimit = 2;
944-
window->nextSrc = window->@base + 2;
945-
window->nbOverflowCorrections = 0;
939+
*window = new ZSTD_window_t
940+
{
941+
@base = stringToByte_20_00,
942+
dictBase = stringToByte_20_00,
943+
dictLimit = 2,
944+
lowLimit = 2,
945+
nextSrc = stringToByte_20_00 + 2,
946+
nbOverflowCorrections = 0
947+
};
946948
}
947949

948950
/**

src/ZstdSharp/Unsafe/ZstdCwksp.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ private static nuint ZSTD_cwksp_create(ZSTD_cwksp* ws, nuint size, ZSTD_customMe
417417
private static void ZSTD_cwksp_free(ZSTD_cwksp* ws, ZSTD_customMem customMem)
418418
{
419419
void* ptr = ws->workspace;
420-
memset(ws, 0, (uint)sizeof(ZSTD_cwksp));
420+
*ws = new ZSTD_cwksp();
421421
ZSTD_customFree(ptr, customMem);
422422
}
423423

@@ -429,7 +429,7 @@ private static void ZSTD_cwksp_free(ZSTD_cwksp* ws, ZSTD_customMem customMem)
429429
private static void ZSTD_cwksp_move(ZSTD_cwksp* dst, ZSTD_cwksp* src)
430430
{
431431
*dst = *src;
432-
memset(src, 0, (uint)sizeof(ZSTD_cwksp));
432+
*src = new ZSTD_cwksp();
433433
}
434434

435435
[MethodImpl(MethodImplOptions.AggressiveInlining)]

src/ZstdSharp/Unsafe/ZstdDecompress.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -432,16 +432,18 @@ public static nuint ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr, void*
432432
return minInputSize;
433433
}
434434

435-
memset(zfhPtr, 0, (uint)sizeof(ZSTD_frameHeader));
435+
*zfhPtr = new ZSTD_frameHeader();
436436
if (format != ZSTD_format_e.ZSTD_f_zstd1_magicless && MEM_readLE32(src) != 0xFD2FB528)
437437
{
438438
if ((MEM_readLE32(src) & 0xFFFFFFF0) == 0x184D2A50)
439439
{
440440
if (srcSize < 8)
441441
return 8;
442-
memset(zfhPtr, 0, (uint)sizeof(ZSTD_frameHeader));
443-
zfhPtr->frameContentSize = MEM_readLE32((sbyte*)src + 4);
444-
zfhPtr->frameType = ZSTD_frameType_e.ZSTD_skippableFrame;
442+
*zfhPtr = new ZSTD_frameHeader
443+
{
444+
frameContentSize = MEM_readLE32((sbyte*)src + 4),
445+
frameType = ZSTD_frameType_e.ZSTD_skippableFrame
446+
};
445447
return 0;
446448
}
447449

@@ -742,7 +744,7 @@ private static ZSTD_frameSizeInfo ZSTD_errorFrameSizeInfo(nuint ret)
742744
private static ZSTD_frameSizeInfo ZSTD_findFrameSizeInfo(void* src, nuint srcSize, ZSTD_format_e format)
743745
{
744746
ZSTD_frameSizeInfo frameSizeInfo;
745-
memset(&frameSizeInfo, 0, (uint)sizeof(ZSTD_frameSizeInfo));
747+
frameSizeInfo = new ZSTD_frameSizeInfo();
746748
if (format == ZSTD_format_e.ZSTD_f_zstd1 && srcSize >= 8 && (MEM_readLE32(src) & 0xFFFFFFF0) == 0x184D2A50)
747749
{
748750
frameSizeInfo.compressedSize = readSkippableFrameSize(src, srcSize);

src/ZstdSharp/Unsafe/ZstdOpt.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1079,7 +1079,7 @@ private static nuint ZSTD_compressBlock_opt_generic(ZSTD_matchState_t* ms, seqSt
10791079
ZSTD_match_t* matches = optStatePtr->matchTable;
10801080
ZSTD_optimal_t lastStretch;
10811081
ZSTD_optLdm_t optLdm;
1082-
memset(&lastStretch, 0, (uint)sizeof(ZSTD_optimal_t));
1082+
lastStretch = new ZSTD_optimal_t();
10831083
optLdm.seqStore = ms->ldmSeqStore != null ? *ms->ldmSeqStore : kNullRawSeqStore;
10841084
optLdm.endPosInBlock = optLdm.startPosInBlock = optLdm.offset = 0;
10851085
ZSTD_opt_getNextMatchAndUpdateSeqStore(&optLdm, (uint)(ip - istart), (uint)(iend - ip));

src/ZstdSharp/Unsafe/ZstdmtCompress.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ private static int ZSTDMT_serialState_reset(serialState_t* serialState, ZSTDMT_b
321321
}
322322
else
323323
{
324-
memset(&@params.ldmParams, 0, (uint)sizeof(ldmParams_t));
324+
@params.ldmParams = new ldmParams_t();
325325
}
326326

327327
serialState->nextJobID = 0;
@@ -376,7 +376,7 @@ private static int ZSTDMT_serialState_reset(serialState_t* serialState, ZSTDMT_b
376376
private static int ZSTDMT_serialState_init(serialState_t* serialState)
377377
{
378378
int initError = 0;
379-
memset(serialState, 0, (uint)sizeof(serialState_t));
379+
*serialState = new serialState_t();
380380
SynchronizationWrapper.Init(&serialState->mutex);
381381
initError |= 0;
382382
initError |= 0;
@@ -764,9 +764,11 @@ private static void ZSTDMT_releaseAllJobResources(ZSTDMT_CCtx_s* mtctx)
764764
void* mutex = mtctx->jobs[jobID].job_mutex;
765765
void* cond = mtctx->jobs[jobID].job_cond;
766766
ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[jobID].dstBuff);
767-
memset(&mtctx->jobs[jobID], 0, (uint)sizeof(ZSTDMT_jobDescription));
768-
mtctx->jobs[jobID].job_mutex = mutex;
769-
mtctx->jobs[jobID].job_cond = cond;
767+
mtctx->jobs[jobID] = new ZSTDMT_jobDescription
768+
{
769+
job_mutex = mutex,
770+
job_cond = cond
771+
};
770772
}
771773

772774
mtctx->inBuff.buffer = g_nullBuffer;

0 commit comments

Comments
 (0)