@@ -160,6 +160,9 @@ static void xdl_parse_lines(mmfile_t *mf, long narec, xdfile_t *xdf) {
160160}
161161
162162
163+ extern u64 xxh3_64 (u8 const * ptr , usize size );
164+
165+
163166static int xdl_prepare_ctx (unsigned int pass , mmfile_t * mf , long narec , xpparam_t const * xpp ,
164167 xdlclassifier_t * cf , xdfile_t * xdf ) {
165168 unsigned long * ha ;
@@ -175,14 +178,26 @@ static int xdl_prepare_ctx(unsigned int pass, mmfile_t *mf, long narec, xpparam_
175178
176179 xdl_parse_lines (mf , narec , xdf );
177180
181+ if ((xpp -> flags & XDF_WHITESPACE_FLAGS ) == 0 ) {
182+ for (usize i = 0 ; i < (usize ) xdf -> nrec ; i ++ ) {
183+ xrecord_t * rec = xdf -> recs [i ];
184+ rec -> ha = xxh3_64 (rec -> ptr , rec -> size );
185+ }
186+ } else {
187+ for (usize i = 0 ; i < (usize ) xdf -> nrec ; i ++ ) {
188+ xrecord_t * rec = xdf -> recs [i ];
189+ char const * dump = (char const * ) rec -> ptr ;
190+ rec -> ha = xdl_hash_record (& dump , (char const * ) (rec -> ptr + rec -> size ), xpp -> flags );
191+ }
192+ }
193+
178194 for (usize i = 0 ; i < (usize ) xdf -> nrec ; i ++ ) {
179195 xrecord_t * rec = xdf -> recs [i ];
180- char const * dump = (char const * ) rec -> ptr ;
181- rec -> ha = xdl_hash_record (& dump , (char const * ) (rec -> ptr + rec -> size ), xpp -> flags );
182196 xdl_classify_record (pass , cf , rec );
183197 }
184198
185199
200+
186201 if (!XDL_CALLOC_ARRAY (rchg , xdf -> nrec + 2 ))
187202 goto abort ;
188203
0 commit comments