RegexKitLite asserzione di errore che si verifica a intermittenza
-
16-09-2019 - |
Domanda
Sto usando il meraviglioso RegexKitLite quadro è costruito su libreria ICU che viene fornito con Mac OS X e iPhone OS.È stata una navigazione tranquilla fino ad ora, con l'eccezione di questo errore che viene visualizzato in modo intermittente durante la ricerca per le partite:
Internal Error
Invalid parameter not satisfying:
(cacheSlot->setToHash == buffer->hash) && (cacheSlot->setToLength == buffer->length) && (cacheSlot->setToUniChar == buffer->uniChar)
Qualsiasi idea di cosa potrebbe essere la causa?
Soluzione
NOTA:Io sono l'autore di RegexKitLite.
Questo è un errore di asserzione entro RegexKitLite.Ci sono un sacco di built-in interno asserzione verifica.Questo dice che dopo il recupero di una cache compilato regex dalla cache, recuperati nella cache regex non è impostato esattamente come dovrebbe essere, per qualche motivo.
La cosa migliore che puoi fare è inviare un bug report a sourceforge.net RegexKit bug tracker.Se possibile, presentare un caso di test che riproduce il bug.Questo è un totale, selvatico, out of the blue indovinare, ma, sulla base dell'affermazione messaggio, scommetto che ha qualcosa a che fare con la partita di operazioni in cui si utilizza il range:
parametro, e che la gamma è costantemente in movimento" e la compattazione.Tale intervallo può attraversare il piccolo/grande dimensione del buffer, da qualche parte intorno a 2048 caratteri.Un'altra possibilità è la ricerca di stringhe che contengono i caratteri Unicode e RegexKitLite utilizza le stringhe diretta buffer, magari su una stringa mutabile e il sostegno del buffer deve essere riassegnati, perché è cresciuto o si è ridotto...o, una mutevole stringa che è stata "non-Unicode" è stato mutato e ora contiene caratteri Unicode, e ha passare dalla cache UTF-16 di conversione di stringhe diretti del buffer.
Speriamo che vi aiuterà a restringere il caso d'angolo che genera l'errore di asserzione.Hey, almeno è la rilevazione di un problema, invece di lottare insieme e seg che ha provocato l'errore, o di ritorno risultato fasullo stringhe.:)