mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1388789 - change return values of nsTextFormatter::vs{s,v}printf; r=froydnj
nsTextFormatter::vsnprintf is defined to return uint32_t(-1) on error. However, it was not doing this. nsTextFormatter::vssprintf is defined as infallible; enforce this by having it return void. MozReview-Commit-ID: LdOhIHzRvAT --HG-- extra : rebase_source : 7164eb47a89ecebfa50d40684eea1325de0172ba
This commit is contained in:
parent
586209d1a8
commit
0d7e17591f
@ -1203,19 +1203,17 @@ StringStuff(SprintfStateStr* aState, const char16_t* aStr, uint32_t aLen)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
void
|
||||||
nsTextFormatter::ssprintf(nsAString& aOut, const char16_t* aFmt, ...)
|
nsTextFormatter::ssprintf(nsAString& aOut, const char16_t* aFmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
uint32_t rv;
|
|
||||||
|
|
||||||
va_start(ap, aFmt);
|
va_start(ap, aFmt);
|
||||||
rv = nsTextFormatter::vssprintf(aOut, aFmt, ap);
|
nsTextFormatter::vssprintf(aOut, aFmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
void
|
||||||
nsTextFormatter::vssprintf(nsAString& aOut, const char16_t* aFmt, va_list aAp)
|
nsTextFormatter::vssprintf(nsAString& aOut, const char16_t* aFmt, va_list aAp)
|
||||||
{
|
{
|
||||||
SprintfStateStr ss;
|
SprintfStateStr ss;
|
||||||
@ -1226,8 +1224,7 @@ nsTextFormatter::vssprintf(nsAString& aOut, const char16_t* aFmt, va_list aAp)
|
|||||||
ss.stuffclosure = &aOut;
|
ss.stuffclosure = &aOut;
|
||||||
|
|
||||||
aOut.Truncate();
|
aOut.Truncate();
|
||||||
int n = dosprintf(&ss, aFmt, aAp);
|
dosprintf(&ss, aFmt, aAp);
|
||||||
return n ? n - 1 : n;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1286,13 +1283,17 @@ nsTextFormatter::vsnprintf(char16_t* aOut, uint32_t aOutLen,
|
|||||||
ss.base = aOut;
|
ss.base = aOut;
|
||||||
ss.cur = aOut;
|
ss.cur = aOut;
|
||||||
ss.maxlen = aOutLen;
|
ss.maxlen = aOutLen;
|
||||||
(void) dosprintf(&ss, aFmt, aAp);
|
int result = dosprintf(&ss, aFmt, aAp);
|
||||||
|
|
||||||
/* If we added chars, and we didn't append a null, do it now. */
|
/* If we added chars, and we didn't append a null, do it now. */
|
||||||
if ((ss.cur != ss.base) && (*(ss.cur - 1) != '\0')) {
|
if ((ss.cur != ss.base) && (*(ss.cur - 1) != '\0')) {
|
||||||
*(--ss.cur) = '\0';
|
*(--ss.cur) = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
n = ss.cur - ss.base;
|
n = ss.cur - ss.base;
|
||||||
return n ? n - 1 : n;
|
return n ? n - 1 : n;
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ public:
|
|||||||
* sprintf into an existing nsAString, overwriting any contents it already
|
* sprintf into an existing nsAString, overwriting any contents it already
|
||||||
* has. Infallible.
|
* has. Infallible.
|
||||||
*/
|
*/
|
||||||
static uint32_t ssprintf(nsAString& aOut, const char16_t* aFmt, ...);
|
static void ssprintf(nsAString& aOut, const char16_t* aFmt, ...);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ private:
|
|||||||
*/
|
*/
|
||||||
static uint32_t vsnprintf(char16_t* aOut, uint32_t aOutLen, const char16_t* aFmt,
|
static uint32_t vsnprintf(char16_t* aOut, uint32_t aOutLen, const char16_t* aFmt,
|
||||||
va_list aAp);
|
va_list aAp);
|
||||||
static uint32_t vssprintf(nsAString& aOut, const char16_t* aFmt, va_list aAp);
|
static void vssprintf(nsAString& aOut, const char16_t* aFmt, va_list aAp);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* nsTextFormatter_h___ */
|
#endif /* nsTextFormatter_h___ */
|
||||||
|
Loading…
Reference in New Issue
Block a user