mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-27 12:50:09 +00:00
Bug 1018783: Update to NSPR_4_10_6_BETA3.
This commit is contained in:
parent
59b2495ac6
commit
3147c027d6
@ -1 +1 @@
|
||||
NSPR_4_10_6_BETA2
|
||||
NSPR_4_10_6_BETA3
|
||||
|
@ -10,4 +10,3 @@
|
||||
*/
|
||||
|
||||
#error "Do not include this header file."
|
||||
|
||||
|
@ -18,6 +18,10 @@
|
||||
#include "prlog.h"
|
||||
#include "prmem.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
/*
|
||||
** WARNING: This code may *NOT* call PR_LOG (because PR_LOG calls it)
|
||||
*/
|
||||
@ -304,7 +308,7 @@ static int cvt_ll(SprintfState *ss, PRInt64 num, int width, int prec, int radix,
|
||||
** Convert a double precision floating point number into its printable
|
||||
** form.
|
||||
**
|
||||
** XXX stop using sprintf to convert floating point
|
||||
** XXX stop using snprintf to convert floating point
|
||||
*/
|
||||
static int cvt_f(SprintfState *ss, double d, const char *fmt0, const char *fmt1)
|
||||
{
|
||||
@ -312,15 +316,14 @@ static int cvt_f(SprintfState *ss, double d, const char *fmt0, const char *fmt1)
|
||||
char fout[300];
|
||||
int amount = fmt1 - fmt0;
|
||||
|
||||
PR_ASSERT((amount > 0) && (amount < sizeof(fin)));
|
||||
if (amount >= sizeof(fin)) {
|
||||
/* Totally bogus % command to sprintf. Just ignore it */
|
||||
if (amount <= 0 || amount >= sizeof(fin)) {
|
||||
/* Totally bogus % command to snprintf. Just ignore it */
|
||||
return 0;
|
||||
}
|
||||
memcpy(fin, fmt0, amount);
|
||||
fin[amount] = 0;
|
||||
|
||||
/* Convert floating point using the native sprintf code */
|
||||
/* Convert floating point using the native snprintf code */
|
||||
#ifdef DEBUG
|
||||
{
|
||||
const char *p = fin;
|
||||
@ -330,14 +333,11 @@ static int cvt_f(SprintfState *ss, double d, const char *fmt0, const char *fmt1)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
sprintf(fout, fin, d);
|
||||
|
||||
/*
|
||||
** This assert will catch overflow's of fout, when building with
|
||||
** debugging on. At least this way we can track down the evil piece
|
||||
** of calling code and fix it!
|
||||
*/
|
||||
PR_ASSERT(strlen(fout) < sizeof(fout));
|
||||
memset(fout, 0, sizeof(fout));
|
||||
snprintf(fout, sizeof(fout), fin, d);
|
||||
/* Explicitly null-terminate fout because on Windows snprintf doesn't
|
||||
* append a null-terminator if the buffer is too small. */
|
||||
fout[sizeof(fout) - 1] = '\0';
|
||||
|
||||
return (*ss->stuff)(ss, fout, strlen(fout));
|
||||
}
|
||||
|
@ -107,6 +107,7 @@ CSRCS = \
|
||||
poll_nm.c \
|
||||
poll_to.c \
|
||||
pollable.c \
|
||||
prfdbl.c \
|
||||
prftest.c \
|
||||
prftest1.c \
|
||||
prftest2.c \
|
||||
|
29
nsprpub/pr/tests/prfdbl.c
Normal file
29
nsprpub/pr/tests/prfdbl.c
Normal file
@ -0,0 +1,29 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/*
|
||||
* This is a simple test of the PR_fprintf() function for doubles.
|
||||
*/
|
||||
|
||||
#include "prprf.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
double pi = 3.1415926;
|
||||
double e = 2.71828;
|
||||
double root2 = 1.414;
|
||||
double zero = 0.0;
|
||||
double nan = zero / zero;
|
||||
|
||||
PR_fprintf(PR_STDOUT, "pi is %f.\n", pi);
|
||||
PR_fprintf(PR_STDOUT, "e is %f.\n", e);
|
||||
PR_fprintf(PR_STDOUT, "The square root of 2 is %f.\n", root2);
|
||||
PR_fprintf(PR_STDOUT, "NaN is %f.\n", nan);
|
||||
|
||||
PR_fprintf(PR_STDOUT, "pi is %301f.\n", pi);
|
||||
PR_fprintf(PR_STDOUT, "e is %65416.123f.\n", e);
|
||||
PR_fprintf(PR_STDOUT, "e is %0000000000000000000065416.123f.\n", e);
|
||||
PR_fprintf(PR_STDOUT, "NaN is %1024.1f.\n", nan);
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user