diff --git a/src/cpp/ripple/utils.h b/src/cpp/ripple/utils.h index 752078048e..c5790bc858 100644 --- a/src/cpp/ripple/utils.h +++ b/src/cpp/ripple/utils.h @@ -165,8 +165,27 @@ inline static std::string sqlEscape(const std::string& strSrc) inline static std::string sqlEscape(const std::vector& vecSrc) { - static boost::format f("X'%s'"); - return str(f % strHex(vecSrc)); + size_t size = vecSrc.size(); + if (size == 0) + return "X''"; + + std::string j(size * 2 + 3, 0); + + unsigned char *oPtr = reinterpret_cast(&*j.begin()); + const unsigned char *iPtr = &vecSrc[0]; + + *oPtr++ = 'X'; + *oPtr++ = '\''; + + for (int i = size; i != 0; --i) + { + unsigned char c = *iPtr++; + *oPtr++ = charHex(c >> 4); + *oPtr++ = charHex(c & 15); + } + + *oPtr++ = '\''; + return j; } template