update nspr to 4.8.4 beta 1 r=ted, wtc

This commit is contained in:
Brad Lassey 2010-02-09 09:55:23 -05:00
Родитель 811b9b2f7d
Коммит 2eb8f86002
19 изменённых файлов: 178 добавлений и 391 удалений

78
nsprpub/configure поставляемый
Просмотреть файл

@ -3373,7 +3373,7 @@ EOF
PR_MD_ASFILES=os_Darwin.s PR_MD_ASFILES=os_Darwin.s
# Add Mac OS X support for loading CFM & CFBundle plugins # Add Mac OS X support for loading CFM & CFBundle plugins
if test -f /System/Library/Frameworks/Carbon.framework/Carbon; then if test -f "${MACOS_SDK_DIR}/System/Library/Frameworks/Carbon.framework/Carbon"; then
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
#define XP_MACOSX 1 #define XP_MACOSX 1
EOF EOF
@ -4132,10 +4132,6 @@ EOF
#define _AMD64_ 1 #define _AMD64_ 1
EOF EOF
cat >> confdefs.h <<\EOF
#define _M_AMD64 1
EOF
else else
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
#define _X86_ 1 #define _X86_ 1
@ -4143,25 +4139,9 @@ EOF
fi fi
;; ;;
alpha)
cat >> confdefs.h <<\EOF
#define _ALPHA_ 1
EOF
;;
mips)
cat >> confdefs.h <<\EOF
#define _MIPS_ 1
EOF
;;
x86_64) x86_64)
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
#define _AMD64_ 1 #define _AMD64_ 1
EOF
cat >> confdefs.h <<\EOF
#define _M_AMD64 1
EOF EOF
USE_64=1 USE_64=1
@ -4169,10 +4149,6 @@ EOF
ia64) ia64)
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
#define _IA64_ 1 #define _IA64_ 1
EOF
cat >> confdefs.h <<\EOF
#define _M_IA64 1
EOF EOF
USE_64=1 USE_64=1
@ -4184,14 +4160,6 @@ EOF
;; ;;
esac esac
if test "$USE_64"; then
cat >> confdefs.h <<\EOF
#define _WIN64 1
EOF
fi
;; ;;
*-wince*|*-winmo*) *-wince*|*-winmo*)
@ -4508,17 +4476,17 @@ EOF
_OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Olimit 4000" _OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Olimit 4000"
ac_safe=`echo "machine/builtins.h" | sed 'y%./+-%__p_%'` ac_safe=`echo "machine/builtins.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for machine/builtins.h""... $ac_c" 1>&6 echo $ac_n "checking for machine/builtins.h""... $ac_c" 1>&6
echo "configure:4512: checking for machine/builtins.h" >&5 echo "configure:4480: checking for machine/builtins.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 4517 "configure" #line 4485 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <machine/builtins.h> #include <machine/builtins.h>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:4522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:4490: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
@ -5167,7 +5135,7 @@ case $target in
;; ;;
*) *)
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
echo "configure:5171: checking for dlopen in -ldl" >&5 echo "configure:5139: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
@ -5175,7 +5143,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS" LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 5179 "configure" #line 5147 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
@ -5186,7 +5154,7 @@ int main() {
dlopen() dlopen()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:5190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:5158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
@ -5203,17 +5171,17 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6 echo "$ac_t""yes" 1>&6
ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
echo "configure:5207: checking for dlfcn.h" >&5 echo "configure:5175: checking for dlfcn.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 5212 "configure" #line 5180 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <dlfcn.h> #include <dlfcn.h>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:5217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:5185: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
@ -5246,13 +5214,13 @@ esac
if test $ac_cv_prog_gcc = yes; then if test $ac_cv_prog_gcc = yes; then
echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
echo "configure:5250: checking whether ${CC-cc} needs -traditional" >&5 echo "configure:5218: checking whether ${CC-cc} needs -traditional" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
ac_pattern="Autoconf.*'x'" ac_pattern="Autoconf.*'x'"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 5256 "configure" #line 5224 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sgtty.h> #include <sgtty.h>
Autoconf TIOCGETP Autoconf TIOCGETP
@ -5270,7 +5238,7 @@ rm -f conftest*
if test $ac_cv_prog_gcc_traditional = no; then if test $ac_cv_prog_gcc_traditional = no; then
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 5274 "configure" #line 5242 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <termio.h> #include <termio.h>
Autoconf TCGETA Autoconf TCGETA
@ -5294,12 +5262,12 @@ fi
for ac_func in lchown strerror for ac_func in lchown strerror
do do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:5298: checking for $ac_func" >&5 echo "configure:5266: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 5303 "configure" #line 5271 "configure"
#include "confdefs.h" #include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes, /* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */ which can conflict with char $ac_func(); below. */
@ -5322,7 +5290,7 @@ $ac_func();
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:5326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:5294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_func_$ac_func=yes" eval "ac_cv_func_$ac_func=yes"
else else
@ -5363,7 +5331,7 @@ hpux*)
if test -z "$GNU_CC"; then if test -z "$GNU_CC"; then
echo $ac_n "checking for +Olit support""... $ac_c" 1>&6 echo $ac_n "checking for +Olit support""... $ac_c" 1>&6
echo "configure:5367: checking for +Olit support" >&5 echo "configure:5335: checking for +Olit support" >&5
if eval "test \"`echo '$''{'ac_cv_hpux_usable_olit_option'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_hpux_usable_olit_option'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -5402,7 +5370,7 @@ darwin*)
*) *)
echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6 echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6
echo "configure:5406: checking for pthread_create in -lpthreads" >&5 echo "configure:5374: checking for pthread_create in -lpthreads" >&5
echo " echo "
#include <pthread.h> #include <pthread.h>
void *foo(void *v) { return v; } void *foo(void *v) { return v; }
@ -5424,7 +5392,7 @@ echo "
echo "$ac_t""no" 1>&6 echo "$ac_t""no" 1>&6
echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
echo "configure:5428: checking for pthread_create in -lpthread" >&5 echo "configure:5396: checking for pthread_create in -lpthread" >&5
echo " echo "
#include <pthread.h> #include <pthread.h>
void *foo(void *v) { return v; } void *foo(void *v) { return v; }
@ -5446,7 +5414,7 @@ echo "
echo "$ac_t""no" 1>&6 echo "$ac_t""no" 1>&6
echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
echo "configure:5450: checking for pthread_create in -lc_r" >&5 echo "configure:5418: checking for pthread_create in -lc_r" >&5
echo " echo "
#include <pthread.h> #include <pthread.h>
void *foo(void *v) { return v; } void *foo(void *v) { return v; }
@ -5468,7 +5436,7 @@ echo "
echo "$ac_t""no" 1>&6 echo "$ac_t""no" 1>&6
echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6 echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
echo "configure:5472: checking for pthread_create in -lc" >&5 echo "configure:5440: checking for pthread_create in -lc" >&5
echo " echo "
#include <pthread.h> #include <pthread.h>
void *foo(void *v) { return v; } void *foo(void *v) { return v; }
@ -5600,7 +5568,7 @@ if test -n "$USE_PTHREADS"; then
rm -f conftest* rm -f conftest*
ac_cv_have_dash_pthread=no ac_cv_have_dash_pthread=no
echo $ac_n "checking whether ${CC-cc} accepts -pthread""... $ac_c" 1>&6 echo $ac_n "checking whether ${CC-cc} accepts -pthread""... $ac_c" 1>&6
echo "configure:5604: checking whether ${CC-cc} accepts -pthread" >&5 echo "configure:5572: checking whether ${CC-cc} accepts -pthread" >&5
echo 'int main() { return 0; }' | cat > conftest.c echo 'int main() { return 0; }' | cat > conftest.c
${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
if test $? -eq 0; then if test $? -eq 0; then
@ -5623,7 +5591,7 @@ echo "configure:5604: checking whether ${CC-cc} accepts -pthread" >&5
ac_cv_have_dash_pthreads=no ac_cv_have_dash_pthreads=no
if test "$ac_cv_have_dash_pthread" = "no"; then if test "$ac_cv_have_dash_pthread" = "no"; then
echo $ac_n "checking whether ${CC-cc} accepts -pthreads""... $ac_c" 1>&6 echo $ac_n "checking whether ${CC-cc} accepts -pthreads""... $ac_c" 1>&6
echo "configure:5627: checking whether ${CC-cc} accepts -pthreads" >&5 echo "configure:5595: checking whether ${CC-cc} accepts -pthreads" >&5
echo 'int main() { return 0; }' | cat > conftest.c echo 'int main() { return 0; }' | cat > conftest.c
${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
if test $? -eq 0; then if test $? -eq 0; then

Просмотреть файл

@ -1013,7 +1013,7 @@ case "$target" in
PR_MD_ASFILES=os_Darwin.s PR_MD_ASFILES=os_Darwin.s
# Add Mac OS X support for loading CFM & CFBundle plugins # Add Mac OS X support for loading CFM & CFBundle plugins
if test -f /System/Library/Frameworks/Carbon.framework/Carbon; then if test -f "${MACOS_SDK_DIR}/System/Library/Frameworks/Carbon.framework/Carbon"; then
AC_DEFINE(XP_MACOSX) AC_DEFINE(XP_MACOSX)
OS_TARGET=MacOSX OS_TARGET=MacOSX
@ -1626,36 +1626,22 @@ tools are selected during the Xcode/Developer Tools installation.])
i*86) i*86)
if test -n "$USE_64"; then if test -n "$USE_64"; then
AC_DEFINE(_AMD64_) AC_DEFINE(_AMD64_)
AC_DEFINE(_M_AMD64)
else else
AC_DEFINE(_X86_) AC_DEFINE(_X86_)
fi fi
;; ;;
alpha)
AC_DEFINE(_ALPHA_)
;;
mips)
AC_DEFINE(_MIPS_)
;;
x86_64) x86_64)
AC_DEFINE(_AMD64_) AC_DEFINE(_AMD64_)
AC_DEFINE(_M_AMD64)
USE_64=1 USE_64=1
;; ;;
ia64) ia64)
AC_DEFINE(_IA64_) AC_DEFINE(_IA64_)
AC_DEFINE(_M_IA64)
USE_64=1 USE_64=1
;; ;;
*) *)
AC_DEFINE(_CPU_ARCH_NOT_DEFINED) AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
;; ;;
esac esac
if test "$USE_64"; then
AC_DEFINE(_WIN64)
fi
;; ;;
*-wince*|*-winmo*) *-wince*|*-winmo*)

Просмотреть файл

@ -1,7 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
plarenas.h
plarena.h
plhash.h

Просмотреть файл

@ -1,9 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
plbase64.h
plerror.h
plgetopt.h
plresolv.h
plstr.h

Просмотреть файл

@ -1,108 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape Portable Runtime (NSPR).
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* plresolv.h - asynchronous name resolution using DNS
*/
#ifndef _PLRESOLV_H_
#define _PLRESOLV_H_
/*
** THIS IS WORK IN PROGRESS. DO NOT ATTEMPT TO USE ANY PORTION OF THIS
** API UNTIL THIS MESSAGE NO LONGER EXISTS. IF YOU DO, THEN YOU SURRENDER
** THE RIGHT TO COMPLAIN ABOUT ANY CONTENT.
*/
#if defined(XP_UNIX)
#include <prtypes.h>
#include <prnetdb.h>
NSPR_BEGIN_EXTERN_C
#define PL_RESOLVE_MAXHOSTENTBUF 1024
#define PL_RESOLVE_DEFAULT_TIMEOUT 0
/* Error return codes */
#define PL_RESOLVE_OK 0
#define PL_RESOLVE_EWINIT 1 /* Failed to initialize window */
#define PL_RESOLVE_EMAKE 2 /* Failed to create request */
#define PL_RESOLVE_ELAUNCH 3 /* Error launching Async request */
#define PL_RESOLVE_ETIMEDOUT 4 /* Request timed-out */
#define PL_RESOLVE_EINVAL 5 /* Invalid argument */
#define PL_RESOLVE_EOVERFLOW 6 /* Buffer Overflow */
#define PL_RESOLVE_EUNKNOWN 7 /* berserk error */
/* ----------- Function Prototypes ----------------*/
PR_EXTERN(PRStatus) PL_ResolveName(
const char *name, unsigned char *buf,
PRIntn bufsize, PRIntervalTime timeout,
PRHostEnt *hostentry, PRIntervalTime *ttl);
PR_EXTERN(PRStatus) PL_ResolveAddr(
const PRNetAddr *address, unsigned char *buf,
PRIntn bufsize, PRIntervalTime timeout,
PRHostEnt *hostentry, PRIntervalTime *ttl);
typedef struct PLResolveStats {
int re_errors;
int re_nu_look;
int re_na_look;
int re_replies;
int re_requests;
int re_resends;
int re_sent;
int re_timeouts;
} PLResolveStats;
typedef struct PLResoveInfo {
PRBool enabled;
PRUint32 numNameLookups;
PRUint32 numAddrLookups;
PRUint32 numLookupsInProgress;
PLResolveStats stats;
} PLResoveInfo;
PR_EXTERN(void) PL_ResolveInfo(PLResoveInfo *info);
NSPR_END_EXTERN_C
#endif /* defined(XP_UNIX) */
#endif /* _PLRESOLV_H_ */

Просмотреть файл

@ -1,5 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
prgc.h

Просмотреть файл

@ -38,7 +38,7 @@
# #
# ***** END LICENSE BLOCK ***** # ***** END LICENSE BLOCK *****
# #
#ident "$Id: prototype,v 1.5 2008/10/20 22:38:46 christophe.ravel.bugs%sun.com Exp $" #ident "$Id: prototype,v 1.6 2010/01/27 22:20:40 wtc%google.com Exp $"
# #
# This required package information file contains a list of package contents. # This required package information file contains a list of package contents.
# The 'pkgmk' command uses this file to identify the contents of a package # The 'pkgmk' command uses this file to identify the contents of a package
@ -118,5 +118,4 @@ f none usr/include/mps/plbase64.h 0644 root bin
f none usr/include/mps/plerror.h 0644 root bin f none usr/include/mps/plerror.h 0644 root bin
f none usr/include/mps/plgetopt.h 0644 root bin f none usr/include/mps/plgetopt.h 0644 root bin
f none usr/include/mps/plhash.h 0644 root bin f none usr/include/mps/plhash.h 0644 root bin
f none usr/include/mps/plresolv.h 0644 root bin
f none usr/include/mps/plstr.h 0644 root bin f none usr/include/mps/plstr.h 0644 root bin

Просмотреть файл

@ -1,52 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
nspr.h
pratom.h
prbit.h
prclist.h
prcmon.h
prcountr.h
prcvar.h
prdtoa.h
prenv.h
prerr.h
prerror.h
prinet.h
prinit.h
prinrval.h
prio.h
pripcsem.h
prlink.h
prlock.h
prlog.h
prlong.h
prmem.h
prmon.h
prmwait.h
prnetdb.h
prolock.h
prpdce.h
prprf.h
prproces.h
prrng.h
prrwlock.h
prshm.h
prshma.h
prsystem.h
prthread.h
prtime.h
prtpool.h
prtrace.h
prtypes.h
prvrsion.h
prwin16.h
obsolete/protypes.h
obsolete/prsem.h
obsolete/probslet.h
private/prpriv.h
private/pprio.h
private/pprthred.h

Просмотреть файл

@ -77,8 +77,10 @@
#ifdef _PR_INET6 #ifdef _PR_INET6
#define _PR_HAVE_INET_NTOP #define _PR_HAVE_INET_NTOP
#define _PR_HAVE_GETHOSTBYNAME2 #define _PR_HAVE_GETHOSTBYNAME2
#ifdef _AIX51 /* AIX 4.3.3 does not have AI_NUMERICHOST. */
#define _PR_HAVE_GETADDRINFO #define _PR_HAVE_GETADDRINFO
#endif #endif
#endif
#define _PR_HAVE_SYSV_SEMAPHORES #define _PR_HAVE_SYSV_SEMAPHORES
#define PR_HAVE_SYSV_NAMED_SHARED_MEMORY #define PR_HAVE_SYSV_NAMED_SHARED_MEMORY
#define _PR_ACCEPT_INHERIT_NONBLOCK #define _PR_ACCEPT_INHERIT_NONBLOCK

Просмотреть файл

@ -106,51 +106,7 @@
#define PR_BYTES_PER_WORD_LOG2 2 #define PR_BYTES_PER_WORD_LOG2 2
#define PR_BYTES_PER_DWORD_LOG2 3 #define PR_BYTES_PER_DWORD_LOG2 3
#elif defined(_ALPHA_) #elif defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_)
#define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN
#define PR_BYTES_PER_BYTE 1
#define PR_BYTES_PER_SHORT 2
#define PR_BYTES_PER_INT 4
#define PR_BYTES_PER_INT64 8
#define PR_BYTES_PER_LONG 4
#define PR_BYTES_PER_FLOAT 4
#define PR_BYTES_PER_DOUBLE 8
#define PR_BYTES_PER_WORD 4
#define PR_BYTES_PER_DWORD 8
#define PR_BITS_PER_BYTE 8
#define PR_BITS_PER_SHORT 16
#define PR_BITS_PER_INT 32
#define PR_BITS_PER_INT64 64
#define PR_BITS_PER_LONG 32
#define PR_BITS_PER_FLOAT 32
#define PR_BITS_PER_DOUBLE 64
#define PR_BITS_PER_WORD 32
#define PR_BITS_PER_BYTE_LOG2 3
#define PR_BITS_PER_SHORT_LOG2 4
#define PR_BITS_PER_INT_LOG2 5
#define PR_BITS_PER_INT64_LOG2 6
#define PR_BITS_PER_LONG_LOG2 5
#define PR_BITS_PER_FLOAT_LOG2 5
#define PR_BITS_PER_DOUBLE_LOG2 6
#define PR_BITS_PER_WORD_LOG2 5
#define PR_BYTES_PER_WORD_LOG2 2
#define PR_BYTES_PER_DWORD_LOG2 3
#define PR_ALIGN_OF_SHORT 2
#define PR_ALIGN_OF_INT 4
#define PR_ALIGN_OF_LONG 4
#define PR_ALIGN_OF_INT64 8
#define PR_ALIGN_OF_FLOAT 4
#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 4
#elif defined(_AMD64_)
#define IS_LITTLE_ENDIAN 1 #define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN #undef IS_BIG_ENDIAN
@ -199,7 +155,7 @@
#define PR_BYTES_PER_WORD_LOG2 3 #define PR_BYTES_PER_WORD_LOG2 3
#define PR_BYTES_PER_DWORD_LOG2 3 #define PR_BYTES_PER_DWORD_LOG2 3
#elif defined(_IA64_) #elif defined(_M_IA64) || defined(_IA64_)
#define IS_LITTLE_ENDIAN 1 #define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN #undef IS_BIG_ENDIAN
@ -248,7 +204,7 @@
#define PR_BYTES_PER_WORD_LOG2 3 #define PR_BYTES_PER_WORD_LOG2 3
#define PR_BYTES_PER_DWORD_LOG2 3 #define PR_BYTES_PER_DWORD_LOG2 3
#elif defined(_ARM_) #elif defined(_M_ARM) || defined(_ARM_)
#define IS_LITTLE_ENDIAN 1 #define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN #undef IS_BIG_ENDIAN

Просмотреть файл

@ -52,11 +52,11 @@
#define _PR_SI_SYSNAME "WIN95" #define _PR_SI_SYSNAME "WIN95"
#if defined(_M_IX86) || defined(_X86_) #if defined(_M_IX86) || defined(_X86_)
#define _PR_SI_ARCHITECTURE "x86" #define _PR_SI_ARCHITECTURE "x86"
#elif defined(_AMD64_) #elif defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_)
#define _PR_SI_ARCHITECTURE "x86-64" #define _PR_SI_ARCHITECTURE "x86-64"
#elif defined(_IA64_) #elif defined(_M_IA64) || defined(_IA64_)
#define _PR_SI_ARCHITECTURE "ia64" #define _PR_SI_ARCHITECTURE "ia64"
#elif defined(_ARM_) #elif defined(_M_ARM) || defined(_ARM_)
#define _PR_SI_ARCHITECTURE "arm" #define _PR_SI_ARCHITECTURE "arm"
#else #else
#error unknown processor architecture #error unknown processor architecture

Просмотреть файл

@ -100,51 +100,7 @@
#define PR_BYTES_PER_WORD_LOG2 2 #define PR_BYTES_PER_WORD_LOG2 2
#define PR_BYTES_PER_DWORD_LOG2 2 #define PR_BYTES_PER_DWORD_LOG2 2
#elif defined(_ALPHA_) #elif defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_)
#define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN
#define PR_BYTES_PER_BYTE 1
#define PR_BYTES_PER_SHORT 2
#define PR_BYTES_PER_INT 4
#define PR_BYTES_PER_INT64 8
#define PR_BYTES_PER_LONG 4
#define PR_BYTES_PER_FLOAT 4
#define PR_BYTES_PER_DOUBLE 8
#define PR_BYTES_PER_WORD 4
#define PR_BYTES_PER_DWORD 8
#define PR_BITS_PER_BYTE 8
#define PR_BITS_PER_SHORT 16
#define PR_BITS_PER_INT 32
#define PR_BITS_PER_INT64 64
#define PR_BITS_PER_LONG 32
#define PR_BITS_PER_FLOAT 32
#define PR_BITS_PER_DOUBLE 64
#define PR_BITS_PER_WORD 32
#define PR_BITS_PER_BYTE_LOG2 3
#define PR_BITS_PER_SHORT_LOG2 4
#define PR_BITS_PER_INT_LOG2 5
#define PR_BITS_PER_INT64_LOG2 6
#define PR_BITS_PER_LONG_LOG2 5
#define PR_BITS_PER_FLOAT_LOG2 5
#define PR_BITS_PER_DOUBLE_LOG2 6
#define PR_BITS_PER_WORD_LOG2 5
#define PR_BYTES_PER_WORD_LOG2 2
#define PR_BYTES_PER_DWORD_LOG2 3
#define PR_ALIGN_OF_SHORT 2
#define PR_ALIGN_OF_INT 4
#define PR_ALIGN_OF_LONG 4
#define PR_ALIGN_OF_INT64 8
#define PR_ALIGN_OF_FLOAT 4
#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 4
#elif defined(_AMD64_)
#define IS_LITTLE_ENDIAN 1 #define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN #undef IS_BIG_ENDIAN
@ -193,7 +149,7 @@
#define PR_BYTES_PER_WORD_LOG2 3 #define PR_BYTES_PER_WORD_LOG2 3
#define PR_BYTES_PER_DWORD_LOG2 3 #define PR_BYTES_PER_DWORD_LOG2 3
#elif defined(_IA64_) #elif defined(_M_IA64) || defined(_IA64_)
#define IS_LITTLE_ENDIAN 1 #define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN #undef IS_BIG_ENDIAN

Просмотреть файл

@ -66,9 +66,9 @@
#define _PR_SI_SYSNAME "WINNT" #define _PR_SI_SYSNAME "WINNT"
#if defined(_M_IX86) || defined(_X86_) #if defined(_M_IX86) || defined(_X86_)
#define _PR_SI_ARCHITECTURE "x86" #define _PR_SI_ARCHITECTURE "x86"
#elif defined(_AMD64_) #elif defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_)
#define _PR_SI_ARCHITECTURE "x86-64" #define _PR_SI_ARCHITECTURE "x86-64"
#elif defined(_IA64_) #elif defined(_M_IA64) || defined(_IA64_)
#define _PR_SI_ARCHITECTURE "ia64" #define _PR_SI_ARCHITECTURE "ia64"
#else #else
#error unknown processor architecture #error unknown processor architecture

Просмотреть файл

@ -189,6 +189,8 @@ NSPR_API(void) PR_LogPrint(const char *fmt, ...);
*/ */
NSPR_API(void) PR_LogFlush(void); NSPR_API(void) PR_LogFlush(void);
NSPR_API(void) PR_Assert(const char *s, const char *file, PRIntn ln);
#if defined(DEBUG) || defined(FORCE_PR_LOG) #if defined(DEBUG) || defined(FORCE_PR_LOG)
#define PR_LOGGING 1 #define PR_LOGGING 1
@ -233,7 +235,6 @@ NSPR_API(void) PR_LogFlush(void);
#if defined(DEBUG) || defined(FORCE_PR_ASSERT) #if defined(DEBUG) || defined(FORCE_PR_ASSERT)
NSPR_API(void) PR_Assert(const char *s, const char *file, PRIntn ln);
#define PR_ASSERT(_expr) \ #define PR_ASSERT(_expr) \
((_expr)?((void)0):PR_Assert(# _expr,__FILE__,__LINE__)) ((_expr)?((void)0):PR_Assert(# _expr,__FILE__,__LINE__))

Просмотреть файл

@ -306,9 +306,9 @@ void _PR_CleanupFdCache(void)
PR_DELETE(fd->secret); PR_DELETE(fd->secret);
PR_DELETE(fd); PR_DELETE(fd);
} }
_pr_fd_cache.head = NULL; _pr_fd_cache.head = NULL;
_pr_fd_cache.tail = NULL; _pr_fd_cache.tail = NULL;
_pr_fd_cache.count = 0; _pr_fd_cache.count = 0;
PR_DestroyLock(_pr_fd_cache.ml); PR_DestroyLock(_pr_fd_cache.ml);
_pr_fd_cache.ml = NULL; _pr_fd_cache.ml = NULL;
while ((pop = PR_StackPop(_pr_fd_cache.stack)) != NULL) while ((pop = PR_StackPop(_pr_fd_cache.stack)) != NULL)

Просмотреть файл

@ -74,6 +74,9 @@
#endif #endif
#ifdef AIX #ifdef AIX
#include <sys/ldr.h> #include <sys/ldr.h>
#ifndef L_IGNOREUNLOAD /* AIX 4.3.3 does not have L_IGNOREUNLOAD. */
#define L_IGNOREUNLOAD 0x10000000
#endif
#endif #endif
#ifdef OSF1 #ifdef OSF1
#include <loader.h> #include <loader.h>

Просмотреть файл

@ -72,7 +72,7 @@ typedef enum _WSA_COMPATIBILITY_BEHAVIOR_ID {
} WSA_COMPATIBILITY_BEHAVIOR_ID, *PWSA_COMPATIBILITY_BEHAVIOR_ID; } WSA_COMPATIBILITY_BEHAVIOR_ID, *PWSA_COMPATIBILITY_BEHAVIOR_ID;
/* from sdkddkver.h */ /* from sdkddkver.h */
#define NTDDI_LONGHORN 0x06000000 #define NTDDI_WIN6 0x06000000 /* Windows Vista */
/* from winsock2.h */ /* from winsock2.h */
#define WSAEVENT HANDLE #define WSAEVENT HANDLE
@ -175,7 +175,7 @@ _PR_MD_SOCKET(int af, int type, int flags)
int ret_dummy; int ret_dummy;
mode.BehaviorId = WsaBehaviorAutoTuning; mode.BehaviorId = WsaBehaviorAutoTuning;
mode.TargetOsVersion = NTDDI_LONGHORN; mode.TargetOsVersion = NTDDI_WIN6;
if (wsaioctlProc(sock, SIO_SET_COMPATIBILITY_MODE, if (wsaioctlProc(sock, SIO_SET_COMPATIBILITY_MODE,
(char *)&mode, sizeof(mode), (char *)&mode, sizeof(mode),
dummy, 4, &ret_dummy, 0, NULL) == SOCKET_ERROR) dummy, 4, &ret_dummy, 0, NULL) == SOCKET_ERROR)

Просмотреть файл

@ -2084,7 +2084,7 @@ gethex( CONST char **sp, U *rvp, int rounding, int sign)
#endif #endif
Bfree(b); Bfree(b);
} }
#endif /*}!NO_HEX_FP*/ #endif /*!NO_HEX_FP}*/
static int static int
#ifdef KR_headers #ifdef KR_headers
@ -2131,7 +2131,13 @@ quorem
bxe = bx + n; bxe = bx + n;
q = *bxe / (*sxe + 1); /* ensure q <= true quotient */ q = *bxe / (*sxe + 1); /* ensure q <= true quotient */
#ifdef DEBUG #ifdef DEBUG
#ifdef NO_STRTOD_BIGCOMP
/*debug*/ if (q > 9) /*debug*/ if (q > 9)
#else
/* An oversized q is possible when quorem is called from bigcomp and */
/* the input is near, e.g., twice the smallest denormalized number. */
/*debug*/ if (q > 15)
#endif
/*debug*/ Bug("oversized quotient in quorem"); /*debug*/ Bug("oversized quotient in quorem");
#endif #endif
if (q) { if (q) {
@ -2217,8 +2223,29 @@ quorem
return q; return q;
} }
#ifndef NO_STRTOD_BIGCOMP #if defined(Avoid_Underflow) || !defined(NO_STRTOD_BIGCOMP) /*{*/
static double
sulp
#ifdef KR_headers
(x, bc) U *x; BCinfo *bc;
#else
(U *x, BCinfo *bc)
#endif
{
U u;
double rv;
int i;
rv = ulp(x);
if (!bc->scale || (i = 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift)) <= 0)
return rv; /* Is there an example where i <= 0 ? */
word0(&u) = Exp_1 + (i << Exp_shift);
word1(&u) = 0;
return rv * u.d;
}
#endif /*}*/
#ifndef NO_STRTOD_BIGCOMP
static void static void
bigcomp bigcomp
#ifdef KR_headers #ifdef KR_headers
@ -2377,7 +2404,7 @@ bigcomp
} }
if (!dsign) if (!dsign)
goto rethi1; goto rethi1;
dval(rv) += 2.*ulp(rv); dval(rv) += 2.*sulp(rv,bc);
} }
else { else {
bc->inexact = 0; bc->inexact = 0;
@ -2394,17 +2421,27 @@ bigcomp
else if (dd < 0) { else if (dd < 0) {
if (!dsign) /* does not happen for round-near */ if (!dsign) /* does not happen for round-near */
retlow1: retlow1:
dval(rv) -= ulp(rv); dval(rv) -= sulp(rv,bc);
} }
else if (dd > 0) { else if (dd > 0) {
if (dsign) { if (dsign) {
rethi1: rethi1:
dval(rv) += ulp(rv); dval(rv) += sulp(rv,bc);
} }
} }
else { else {
/* Exact half-way case: apply round-even rule. */ /* Exact half-way case: apply round-even rule. */
if (word1(rv) & 1) { if ((j = ((word0(rv) & Exp_mask) >> Exp_shift) - bc->scale) <= 0) {
i = 1 - j;
if (i <= 31) {
if (word1(rv) & (0x1 << i))
goto odd;
}
else if (word0(rv) & (0x1 << (i-32)))
goto odd;
}
else if (word1(rv) & 1) {
odd:
if (dsign) if (dsign)
goto rethi1; goto rethi1;
goto retlow1; goto retlow1;
@ -2427,7 +2464,7 @@ strtod
#endif #endif
{ {
int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1; int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1;
int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; int esign, i, j, k, nd, nd0, nf, nz, nz0, nz1, sign;
CONST char *s, *s0, *s1; CONST char *s, *s0, *s1;
double aadj, aadj1; double aadj, aadj1;
Long L; Long L;
@ -2435,6 +2472,9 @@ strtod
ULong y, z; ULong y, z;
BCinfo bc; BCinfo bc;
Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta;
#ifdef Avoid_Underflow
ULong Lsb, Lsb1;
#endif
#ifdef SET_INEXACT #ifdef SET_INEXACT
int oldinexact; int oldinexact;
#endif #endif
@ -2454,7 +2494,7 @@ strtod
CONST char *s2; CONST char *s2;
#endif #endif
sign = nz0 = nz = bc.dplen = bc.uflchk = 0; sign = nz0 = nz1 = nz = bc.dplen = bc.uflchk = 0;
dval(&rv) = 0.; dval(&rv) = 0.;
for(s = s00;;s++) switch(*s) { for(s = s00;;s++) switch(*s) {
case '-': case '-':
@ -2504,6 +2544,8 @@ strtod
z = 10*z + c - '0'; z = 10*z + c - '0';
nd0 = nd; nd0 = nd;
bc.dp0 = bc.dp1 = s - s0; bc.dp0 = bc.dp1 = s - s0;
for(s1 = s; s1 > s0 && *--s1 == '0'; )
++nz1;
#ifdef USE_LOCALE #ifdef USE_LOCALE
s1 = localeconv()->decimal_point; s1 = localeconv()->decimal_point;
if (c == *s1) { if (c == *s1) {
@ -2552,7 +2594,7 @@ strtod
y = 10*y + c; y = 10*y + c;
else if (nd <= DBL_DIG + 1) else if (nd <= DBL_DIG + 1)
z = 10*z + c; z = 10*z + c;
nz = 0; nz = nz1 = 0;
} }
} }
} }
@ -2817,6 +2859,8 @@ strtod
>> Exp_shift)) > 0) { >> Exp_shift)) > 0) {
/* scaled rv is denormal; clear j low bits */ /* scaled rv is denormal; clear j low bits */
if (j >= 32) { if (j >= 32) {
if (j > 54)
goto undfl;
word1(&rv) = 0; word1(&rv) = 0;
if (j >= 53) if (j >= 53)
word0(&rv) = (P+2)*Exp_msk1; word0(&rv) = (P+2)*Exp_msk1;
@ -2860,7 +2904,7 @@ strtod
/* Put digits into bd: true value = bd * 10^e */ /* Put digits into bd: true value = bd * 10^e */
bc.nd = nd; bc.nd = nd - nz1;
#ifndef NO_STRTOD_BIGCOMP #ifndef NO_STRTOD_BIGCOMP
bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */ bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */
/* to silence an erroneous warning about bc.nd0 */ /* to silence an erroneous warning about bc.nd0 */
@ -2873,7 +2917,7 @@ strtod
if (i > nd0) if (i > nd0)
j += bc.dplen; j += bc.dplen;
for(;;) { for(;;) {
if (--j <= bc.dp1 && j >= bc.dp0) if (--j < bc.dp1 && j >= bc.dp0)
j = bc.dp0 - 1; j = bc.dp0 - 1;
if (s0[j] != '0') if (s0[j] != '0')
break; break;
@ -2918,12 +2962,21 @@ strtod
bs2++; bs2++;
#endif #endif
#ifdef Avoid_Underflow #ifdef Avoid_Underflow
Lsb = LSB;
Lsb1 = 0;
j = bbe - bc.scale; j = bbe - bc.scale;
i = j + bbbits - 1; /* logb(rv) */ i = j + bbbits - 1; /* logb(rv) */
if (i < Emin) /* denormal */ j = P + 1 - bbbits;
j += P - Emin; if (i < Emin) { /* denormal */
else i = Emin - i;
j = P + 1 - bbbits; j -= i;
if (i < 32)
Lsb <<= i;
else if (i < 52)
Lsb1 = Lsb << (i-32);
else
Lsb1 = Exp_mask;
}
#else /*Avoid_Underflow*/ #else /*Avoid_Underflow*/
#ifdef Sudden_Underflow #ifdef Sudden_Underflow
#ifdef IBM #ifdef IBM
@ -2971,7 +3024,7 @@ strtod
bc.dsign = delta->sign; bc.dsign = delta->sign;
delta->sign = 0; delta->sign = 0;
i = cmp(delta, bs); i = cmp(delta, bs);
#ifndef NO_STRTOD_BIGCOMP #ifndef NO_STRTOD_BIGCOMP /*{*/
if (bc.nd > nd && i <= 0) { if (bc.nd > nd && i <= 0) {
if (bc.dsign) if (bc.dsign)
break; /* Must use bigcomp(). */ break; /* Must use bigcomp(). */
@ -2982,13 +3035,10 @@ strtod
} }
else else
#endif #endif
{
bc.nd = nd;
i = -1; /* Discarded digits make delta smaller. */ i = -1; /* Discarded digits make delta smaller. */
}
} }
#endif #endif /*}*/
#ifdef Honor_FLT_ROUNDS #ifdef Honor_FLT_ROUNDS /*{*/
if (bc.rounding != 1) { if (bc.rounding != 1) {
if (i < 0) { if (i < 0) {
/* Error is less than an ulp */ /* Error is less than an ulp */
@ -3022,7 +3072,7 @@ strtod
} }
} }
apply_adj: apply_adj:
#ifdef Avoid_Underflow #ifdef Avoid_Underflow /*{*/
if (bc.scale && (y = word0(&rv) & Exp_mask) if (bc.scale && (y = word0(&rv) & Exp_mask)
<= 2*P*Exp_msk1) <= 2*P*Exp_msk1)
word0(&adj) += (2*P+1)*Exp_msk1 - y; word0(&adj) += (2*P+1)*Exp_msk1 - y;
@ -3036,7 +3086,7 @@ strtod
} }
else else
#endif /*Sudden_Underflow*/ #endif /*Sudden_Underflow*/
#endif /*Avoid_Underflow*/ #endif /*Avoid_Underflow}*/
dval(&rv) += adj.d*ulp(&rv); dval(&rv) += adj.d*ulp(&rv);
} }
break; break;
@ -3053,7 +3103,7 @@ strtod
adj.d = y; adj.d = y;
} }
} }
#ifdef Avoid_Underflow #ifdef Avoid_Underflow /*{*/
if (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1) if (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
word0(&adj) += (2*P+1)*Exp_msk1 - y; word0(&adj) += (2*P+1)*Exp_msk1 - y;
#else #else
@ -3069,31 +3119,31 @@ strtod
goto cont; goto cont;
} }
#endif /*Sudden_Underflow*/ #endif /*Sudden_Underflow*/
#endif /*Avoid_Underflow*/ #endif /*Avoid_Underflow}*/
adj.d *= ulp(&rv); adj.d *= ulp(&rv);
if (bc.dsign) { if (bc.dsign) {
if (word0(&rv) == Big0 && word1(&rv) == Big1) if (word0(&rv) == Big0 && word1(&rv) == Big1)
goto ovfl; goto ovflfree;
dval(&rv) += adj.d; dval(&rv) += adj.d;
} }
else else
dval(&rv) -= adj.d; dval(&rv) -= adj.d;
goto cont; goto cont;
} }
#endif /*Honor_FLT_ROUNDS*/ #endif /*}Honor_FLT_ROUNDS*/
if (i < 0) { if (i < 0) {
/* Error is less than half an ulp -- check for /* Error is less than half an ulp -- check for
* special case of mantissa a power of two. * special case of mantissa a power of two.
*/ */
if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask
#ifdef IEEE_Arith #ifdef IEEE_Arith /*{*/
#ifdef Avoid_Underflow #ifdef Avoid_Underflow
|| (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1 || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1
#else #else
|| (word0(&rv) & Exp_mask) <= Exp_msk1 || (word0(&rv) & Exp_mask) <= Exp_msk1
#endif #endif
#endif #endif /*}*/
) { ) {
#ifdef SET_INEXACT #ifdef SET_INEXACT
if (!delta->x[0] && delta->wds <= 1) if (!delta->x[0] && delta->wds <= 1)
@ -3184,18 +3234,39 @@ strtod
#ifdef IBM #ifdef IBM
goto cont; goto cont;
#else #else
#ifndef NO_STRTOD_BIGCOMP
if (bc.nd > nd)
goto cont;
#endif
break; break;
#endif #endif
} }
#ifndef ROUND_BIASED #ifndef ROUND_BIASED
#ifdef Avoid_Underflow
if (Lsb1) {
if (!(word0(&rv) & Lsb1))
break;
}
else if (!(word1(&rv) & Lsb))
break;
#else
if (!(word1(&rv) & LSB)) if (!(word1(&rv) & LSB))
break; break;
#endif
#endif #endif
if (bc.dsign) if (bc.dsign)
#ifdef Avoid_Underflow
dval(&rv) += sulp(&rv, &bc);
#else
dval(&rv) += ulp(&rv); dval(&rv) += ulp(&rv);
#endif
#ifndef ROUND_BIASED #ifndef ROUND_BIASED
else { else {
#ifdef Avoid_Underflow
dval(&rv) -= sulp(&rv, &bc);
#else
dval(&rv) -= ulp(&rv); dval(&rv) -= ulp(&rv);
#endif
#ifndef Sudden_Underflow #ifndef Sudden_Underflow
if (!dval(&rv)) { if (!dval(&rv)) {
if (bc.nd >nd) { if (bc.nd >nd) {
@ -3267,8 +3338,17 @@ strtod
dval(&rv) += adj.d; dval(&rv) += adj.d;
if ((word0(&rv) & Exp_mask) >= if ((word0(&rv) & Exp_mask) >=
Exp_msk1*(DBL_MAX_EXP+Bias-P)) { Exp_msk1*(DBL_MAX_EXP+Bias-P)) {
if (word0(&rv0) == Big0 && word1(&rv0) == Big1) if (word0(&rv0) == Big0 && word1(&rv0) == Big1) {
#ifdef Honor_FLT_ROUNDS
ovflfree:
#endif
Bfree(bb);
Bfree(bd);
Bfree(bs);
Bfree(bd0);
Bfree(delta);
goto ovfl; goto ovfl;
}
word0(&rv) = Big0; word0(&rv) = Big0;
word1(&rv) = Big1; word1(&rv) = Big1;
goto cont; goto cont;
@ -3288,9 +3368,23 @@ strtod
dval(&aadj2) = aadj1; dval(&aadj2) = aadj1;
word0(&aadj2) += (2*P+1)*Exp_msk1 - y; word0(&aadj2) += (2*P+1)*Exp_msk1 - y;
aadj1 = dval(&aadj2); aadj1 = dval(&aadj2);
adj.d = aadj1 * ulp(&rv);
dval(&rv) += adj.d;
if (rv.d == 0.)
#ifdef NO_STRTOD_BIGCOMP
goto undfl;
#else
{
if (bc.nd > nd)
bc.dsign = 1;
break;
}
#endif
}
else {
adj.d = aadj1 * ulp(&rv);
dval(&rv) += adj.d;
} }
adj.d = aadj1 * ulp(&rv);
dval(&rv) += adj.d;
#else #else
#ifdef Sudden_Underflow #ifdef Sudden_Underflow
if ((word0(&rv) & Exp_mask) <= P*Exp_msk1) { if ((word0(&rv) & Exp_mask) <= P*Exp_msk1) {
@ -3373,8 +3467,10 @@ strtod
Bfree(bd0); Bfree(bd0);
Bfree(delta); Bfree(delta);
#ifndef NO_STRTOD_BIGCOMP #ifndef NO_STRTOD_BIGCOMP
if (bc.nd > nd) if (bc.nd > nd && bc.dsign) {
bc.e0 += nz1;
bigcomp(&rv, s0, &bc); bigcomp(&rv, s0, &bc);
}
#endif #endif
#ifdef SET_INEXACT #ifdef SET_INEXACT
if (bc.inexact) { if (bc.inexact) {

Просмотреть файл

@ -98,7 +98,8 @@ int main(int argc, char** argv)
PR_FreeLibraryName(libName); PR_FreeLibraryName(libName);
if (lib == NULL) { if (lib == NULL) {
PRInt32 textLength = PR_GetErrorTextLength(); PRInt32 textLength = PR_GetErrorTextLength();
char *text = (char*)PR_MALLOC(textLength); char *text = (char*)PR_MALLOC(textLength + 1);
text[0] = '\0';
(void)PR_GetErrorText(text); (void)PR_GetErrorText(text);
fprintf( fprintf(
stderr, "PR_LoadLibrary failed (%d, %d, %s)\n", stderr, "PR_LoadLibrary failed (%d, %d, %s)\n",