0

私は、MacOSXとiPhoneOSに同梱されているICUライブラリに基づいて構築された素晴らしいRegexKitLiteフレームワークを使用しています。一致するものを検索するときに断続的に表示されるこのエラーを除いて、これまでのところ順調に進んでいます。

Internal Error
Invalid parameter not satisfying:
(cacheSlot->setToHash == buffer->hash) && (cacheSlot->setToLength == buffer->length) && (cacheSlot->setToUniChar == buffer->uniChar)

これを引き起こしている可能性のあるアイデアはありますか?

4

1 に答える 1

1

: 私は RegexKitLite の作成者です。

これは、RegexKitLite 内の内部アサーション エラーです。多くの組み込みの内部アサーション チェックがあります。これは、キャッシュからコンパイルされたキャッシュされた正規表現を取得した後、取得されたキャッシュされた正規表現が何らかの理由で正確に設定されていないことを示しています。

あなたができる最善の方法は、 sourceforge.net RegexKit バグ トラッカーでバグ レポートを送信することです。可能であれば、バグを再現するテスト ケースを提出してください。これは予想外の完全な推測ですが、アサーションメッセージに基づいて、あなたが使用している一致操作と関係があると思います.range:パラメータ、およびその範囲は常に「移動」および縮小しています。その範囲は、2048 文字前後の小さな/大きなバッファ サイズを超える可能性があります。別の可能性は、Unicode 文字を含む文字列を検索することであり、RegexKitLite はおそらく変更可能な文字列とバッキング バッファーが拡大または縮小したために再割り当てされた... または、「非 Unicode」だった変更可能な文字列が変更され、現在は Unicode 文字が含まれており、キャッシュされた UTF-16 変換から文字列直接バッファ。

うまくいけば、アサーションの失敗を引き起こしているまれなケースを絞り込むのに役立ちます. ねえ、少なくとも、問題を検出して、ゆっくり進んでセグメント フォールトしたり、偽の結果文字列を返したりするのではありません。:)

于 2009-08-14T15:55:36.290 に答える