summaryrefslogtreecommitdiff
path: root/src/Fl_Native_File_Chooser_common.cxx
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2014-01-06 17:52:06 +0000
committerGreg Ercolano <erco@seriss.com>2014-01-06 17:52:06 +0000
commit70865d6c10bfd7f47ce26604bfb894ad67ebba36 (patch)
treeda67691f2a88a0476103ffb54aac094913564d66 /src/Fl_Native_File_Chooser_common.cxx
parent8ecd7a1abb19f15dcd9761bfe8c1f80f6600231d (diff)
Fixes STR# 3025; string overflow with large filter()s.
Replaced fixed arrays with dynamic strings. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10046 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Native_File_Chooser_common.cxx')
-rw-r--r--src/Fl_Native_File_Chooser_common.cxx20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Fl_Native_File_Chooser_common.cxx b/src/Fl_Native_File_Chooser_common.cxx
index 7fec0a34e..1849ef50b 100644
--- a/src/Fl_Native_File_Chooser_common.cxx
+++ b/src/Fl_Native_File_Chooser_common.cxx
@@ -71,6 +71,26 @@ static void chrcat(char *s, char c) {
strcat(s, tmp);
}
+// COUNT OCCURANCES OF CHAR 'c' IN 'find'.
+int strcnt(const char *s, char c) {
+ int cnt = 0;
+ while ( *s ) { if (*s++ == c ) ++cnt; }
+ return cnt;
+}
+
+// COUNT OCCURANCES OF ANY CHARS FROM 'find' IN 's'.
+int strcnt(const char *s, const char *find) {
+ int cnt = 0;
+ const char *f;
+ while ( *s ) {
+ for (f=find; *f; f++) {
+ if (*s == *f) { ++cnt; break; }
+ }
+ ++s;
+ }
+ return cnt;
+}
+
//
// End of "$Id$".
//