From c8c3eaf9f77f7c5e65a1d5c9a0d6595cc812f7a1 Mon Sep 17 00:00:00 2001 From: w00t Date: Tue, 3 Jul 2007 11:44:35 +0000 Subject: Fix off-by-one reported by Darom in bug #339 git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7421 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/inspircd.cpp | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) (limited to 'src/inspircd.cpp') diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 858862e9d..3ccdfca54 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -40,6 +40,8 @@ #include "typedefs.h" #include "command_parse.h" #include "exitcodes.h" +#include "wildcard.h" + #ifdef WIN32 @@ -1150,6 +1152,93 @@ int InspIRCd::Run() int main(int argc, char** argv) { + struct timeval start, stop; + std::string str; + std::string pattern; + char *strp, *patternp; + + if (argc < 3) + { + printf("not enough args: pattern string\n"); + exit(0); + } + + pattern = argv[1]; + str = argv[2]; + + patternp = argv[1]; + strp = argv[2]; + + printf("result of std::string.find: "); + + if (str.find(pattern) != string::npos) + { + printf("true\n"); + } + else + { + printf("false\n"); + } + + printf("result of match(): "); + + if (match(strp, patternp)) + { + printf("true\n"); + } + else + { + printf("false\n"); + } + + + printf("result of strstr(): "); + + if (strstr(strp, patternp)) + { + printf("true\n"); + } + else + { + printf("false\n"); + } + + gettimeofday(&start, NULL); + for (int i = 0; i < 30000; i++) + { + str.find(pattern); + } + gettimeofday(&stop, NULL); + + printf("std::string.find: %lds and %ldus\n", stop.tv_sec - start.tv_sec, stop.tv_usec - start.tv_usec); + + + gettimeofday(&start, NULL); + for (int i = 0; i < 30000; i++) + { + match(strp, patternp); + } + gettimeofday(&stop, NULL); + + printf("match(): %lds and %ldus\n", stop.tv_sec - start.tv_sec, stop.tv_usec - start.tv_usec); + + + + gettimeofday(&start, NULL); + for (int i = 0; i < 30000; i++) + { + strstr(strp, patternp); + } + gettimeofday(&stop, NULL); + + printf("strstr(): %lds and %ldus\n", stop.tv_sec - start.tv_sec, stop.tv_usec - start.tv_usec); + + exit(0); + + + + + SI = new InspIRCd(argc, argv); SI->Run(); delete SI; -- cgit v1.2.3