- strcpy(Buffer,Bins.c_str());
- if (TokSplitString(',',Buffer,StaticBinList,
+ // Workaround for #236688. Only allocate a new buffer if the field
+ // is large, to avoid a performance penalty
+ char *BigBuf = NULL;
+ char *Buf;
+ if (Bins.length() > sizeof(Buffer))
+ {
+ BigBuf = new char[Bins.length()];
+ Buf = BigBuf;
+ }
+ else
+ {
+ Buf = Buffer;
+ }
+
+ strcpy(Buf,Bins.c_str());
+ if (TokSplitString(',',Buf,StaticBinList,