aboutsummaryrefslogtreecommitdiff
path: root/project/src/lib-kmp.c
diff options
context:
space:
mode:
authorWiimm <none>2020-09-30 13:20:16 +0200
committerWiimm <none>2020-09-30 13:20:16 +0200
commit646b95d113309378591b75a290ee6c62a04f3772 (patch)
treea94864e8cef5fc0fbffb7e69d46d688e7caaae3d /project/src/lib-kmp.c
parenteaf1f8f8ce68b80ebdcefb45896461a89b47e1e1 (diff)
SZS v2.20a.beta1: Test Mac build
Diffstat (limited to 'project/src/lib-kmp.c')
-rw-r--r--project/src/lib-kmp.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/project/src/lib-kmp.c b/project/src/lib-kmp.c
index 239e577..ba31951 100644
--- a/project/src/lib-kmp.c
+++ b/project/src/lib-kmp.c
@@ -2998,6 +2998,7 @@ enumError ScanRawDataKMP
else
ResetKMP(kmp);
+ kmp->fatt = raw->fatt;
kmp->fname = raw->fname;
raw->fname = 0;
@@ -6022,7 +6023,6 @@ void CheckUsedPos ( const kmp_t *kmp, kmp_usedpos_t *up )
}
}
-
#if HAVE_WIIMM_EXT && 0
PrintUsedPosObj(stderr,1,&up->orig);
PrintUsedPosObj(stderr,1,&up->orig_lex);
@@ -6035,6 +6035,46 @@ void CheckUsedPos ( const kmp_t *kmp, kmp_usedpos_t *up )
#endif
}
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void CheckWarnKMP ( kmp_t *kmp, kmp_usedpos_t *up )
+{
+ kmp_usedpos_t local_up;
+ if (!up)
+ {
+ InitializeUsedPos(&local_up);
+ up = &local_up;
+ }
+
+ CheckUsedPos(kmp,up);
+ if ( up->suggest->max_rating >= WLEVEL_WARN )
+ kmp->warn_bits |= 1 << WARNSZS_ITEMPOS;
+
+ //-------------------------------------------------------------------------
+
+ const uint mask = 1 << WARNSZS_SELF_ITPH;
+ if (!(kmp->warn_bits & mask))
+ {
+ const List_t *phlist = kmp->dlist + KMP_ITPH;
+ const int n_ph = phlist->used;
+
+ if (n_ph)
+ {
+ uint i;
+ for ( i = 0; i < n_ph; i++ )
+ {
+ const kmp_itph_entry_t *ph = (kmp_itph_entry_t*)phlist->list + i;
+ if ( ph->next[0] == i && ph->pt_len == 1 )
+ {
+ kmp->warn_bits |= mask;
+ break;
+ }
+ }
+ }
+ }
+}
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// DetectSpecialKMP() ///////////////