diff --git a/src/fdr/fdr_compile.cpp b/src/fdr/fdr_compile.cpp index cd0013e4..6f2de3d9 100644 --- a/src/fdr/fdr_compile.cpp +++ b/src/fdr/fdr_compile.cpp @@ -175,6 +175,7 @@ bytecode_ptr FDRCompiler::setupFDR() { fdr->size = size; fdr->engineID = eng.getID(); fdr->maxStringLen = verify_u32(maxLen(lits)); + fdr->numStrings = verify_u32(lits.size()); assert(eng.bits > 8 && eng.bits < 16); // we allow domains 9 to 15 only fdr->domain = eng.bits; fdr->domainMask = (1 << eng.bits) - 1; diff --git a/src/fdr/fdr_dump.cpp b/src/fdr/fdr_dump.cpp index 3fe9062a..ae81f257 100644 --- a/src/fdr/fdr_dump.cpp +++ b/src/fdr/fdr_dump.cpp @@ -86,7 +86,7 @@ void dumpTeddy(const Teddy *teddy, FILE *f) { fprintf(f, " masks %u\n", des->numMasks); fprintf(f, " buckets %u\n", des->getNumBuckets()); fprintf(f, " packed %s\n", des->packed ? "true" : "false"); - fprintf(f, " strings ???\n"); + fprintf(f, " strings %u\n", teddy->numStrings); fprintf(f, " size %zu bytes\n", fdrSize((const FDR *)teddy)); fprintf(f, " max length %u\n", teddy->maxStringLen); fprintf(f, " floodoff %u (%x)\n", teddy->floodOffset, @@ -107,7 +107,7 @@ void dumpFDR(const FDR *fdr, FILE *f) { fprintf(f, " domain %u\n", fdr->domain); fprintf(f, " stride %u\n", fdr->stride); - fprintf(f, " strings ???\n"); + fprintf(f, " strings %u\n", fdr->numStrings); fprintf(f, " size %zu bytes\n", fdrSize(fdr)); fprintf(f, " max length %u\n", fdr->maxStringLen); fprintf(f, " floodoff %u (%x)\n", fdr->floodOffset, fdr->floodOffset); diff --git a/src/fdr/fdr_internal.h b/src/fdr/fdr_internal.h index 8109d1e8..2315b2d8 100644 --- a/src/fdr/fdr_internal.h +++ b/src/fdr/fdr_internal.h @@ -69,6 +69,7 @@ struct FDR { u32 engineID; u32 size; u32 maxStringLen; + u32 numStrings; u32 confOffset; u32 floodOffset; u8 stride; /* stride - how frequently the data is consulted by the first diff --git a/src/fdr/teddy_compile.cpp b/src/fdr/teddy_compile.cpp index 14f19354..a35e5900 100644 --- a/src/fdr/teddy_compile.cpp +++ b/src/fdr/teddy_compile.cpp @@ -520,6 +520,7 @@ bytecode_ptr TeddyCompiler::build() { teddy->size = size; teddy->engineID = eng.getID(); teddy->maxStringLen = verify_u32(maxLen(lits)); + teddy->numStrings = verify_u32(lits.size()); // Write confirm structures. u8 *ptr = teddy_base + ROUNDUP_CL(headerSize) + ROUNDUP_CL(maskLen) + diff --git a/src/fdr/teddy_internal.h b/src/fdr/teddy_internal.h index d1752452..174710bc 100644 --- a/src/fdr/teddy_internal.h +++ b/src/fdr/teddy_internal.h @@ -55,6 +55,7 @@ struct Teddy { u32 engineID; u32 size; u32 maxStringLen; + u32 numStrings; u32 confOffset; u32 floodOffset; };