Loading include/utils/String8.h +2 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,8 @@ public: status_t append(const char* other); status_t append(const char* other, size_t numChars); status_t appendFormat(const char* fmt, ...); // Note that this function takes O(N) time to calculate the value. // No cache value is stored. size_t getUtf32Length() const; Loading libs/utils/String8.cpp +29 −7 Original line number Diff line number Diff line Loading @@ -372,6 +372,27 @@ status_t String8::append(const char* other, size_t otherLen) return real_append(other, otherLen); } status_t String8::appendFormat(const char* fmt, ...) { va_list ap; va_start(ap, fmt); int result = NO_ERROR; int n = vsnprintf(NULL, 0, fmt, ap); if (n != 0) { size_t oldLength = length(); char* buf = lockBuffer(oldLength + n); if (buf) { vsnprintf(buf + oldLength, n + 1, fmt, ap); } else { result = NO_MEMORY; } } va_end(ap); return result; } status_t String8::real_append(const char* other, size_t otherLen) { const size_t myLen = bytes(); Loading Loading @@ -411,15 +432,16 @@ status_t String8::unlockBuffer(size_t size) if (size != this->size()) { SharedBuffer* buf = SharedBuffer::bufferFromData(mString) ->editResize(size+1); if (buf) { if (! buf) { return NO_MEMORY; } char* str = (char*)buf->data(); str[size] = 0; mString = str; return NO_ERROR; } } return NO_MEMORY; return NO_ERROR; } ssize_t String8::find(const char* other, size_t start) const Loading Loading
include/utils/String8.h +2 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,8 @@ public: status_t append(const char* other); status_t append(const char* other, size_t numChars); status_t appendFormat(const char* fmt, ...); // Note that this function takes O(N) time to calculate the value. // No cache value is stored. size_t getUtf32Length() const; Loading
libs/utils/String8.cpp +29 −7 Original line number Diff line number Diff line Loading @@ -372,6 +372,27 @@ status_t String8::append(const char* other, size_t otherLen) return real_append(other, otherLen); } status_t String8::appendFormat(const char* fmt, ...) { va_list ap; va_start(ap, fmt); int result = NO_ERROR; int n = vsnprintf(NULL, 0, fmt, ap); if (n != 0) { size_t oldLength = length(); char* buf = lockBuffer(oldLength + n); if (buf) { vsnprintf(buf + oldLength, n + 1, fmt, ap); } else { result = NO_MEMORY; } } va_end(ap); return result; } status_t String8::real_append(const char* other, size_t otherLen) { const size_t myLen = bytes(); Loading Loading @@ -411,15 +432,16 @@ status_t String8::unlockBuffer(size_t size) if (size != this->size()) { SharedBuffer* buf = SharedBuffer::bufferFromData(mString) ->editResize(size+1); if (buf) { if (! buf) { return NO_MEMORY; } char* str = (char*)buf->data(); str[size] = 0; mString = str; return NO_ERROR; } } return NO_MEMORY; return NO_ERROR; } ssize_t String8::find(const char* other, size_t start) const Loading