| 878 | } |
| 879 | |
| 880 | vtkStdString vtkMySQLQuery::EscapeString(vtkStdString src, bool addSurroundingQuotes) |
| 881 | { |
| 882 | std::string dst; |
| 883 | vtkMySQLDatabase* dbContainer = static_cast<vtkMySQLDatabase*>(this->Database); |
| 884 | assert(dbContainer != nullptr); |
| 885 | |
| 886 | MYSQL* db; |
| 887 | if ((!dbContainer->IsOpen()) || !(db = dbContainer->Private->Connection)) |
| 888 | { // fall back to superclass implementation |
| 889 | dst = this->Superclass::EscapeString(src, addSurroundingQuotes); |
| 890 | return dst; |
| 891 | } |
| 892 | |
| 893 | unsigned long ssz = src.size(); |
| 894 | char* dstarr = new char[2 * ssz + (addSurroundingQuotes ? 3 : 1)]; |
| 895 | char* end = dstarr; |
| 896 | if (addSurroundingQuotes) |
| 897 | { |
| 898 | *(end++) = '\''; |
| 899 | } |
| 900 | end += mysql_real_escape_string(db, end, src.c_str(), ssz); |
| 901 | if (addSurroundingQuotes) |
| 902 | { |
| 903 | *(end++) = '\''; |
| 904 | *(end++) = '\0'; |
| 905 | } |
| 906 | dst = dstarr; |
| 907 | delete[] dstarr; |
| 908 | return dst; |
| 909 | } |
| 910 | |
| 911 | //------------------------------------------------------------------------------ |
| 912 | |