You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by fa...@apache.org on 2008/04/16 19:02:30 UTC
svn commit: r648752 [5/5] - in /stdcxx/branches/4.2.x: doc/stdlibref/
etc/config/ etc/config/src/ etc/config/windows/ etc/nls/ examples/manual/
examples/tutorial/ include/ include/ansi/ include/loc/ include/rw/ src/
src/ia64/ tests/algorithms/ tests/co...
Modified: stdcxx/branches/4.2.x/tests/src/printf.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/src/printf.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/src/printf.cpp (original)
+++ stdcxx/branches/4.2.x/tests/src/printf.cpp Wed Apr 16 10:01:56 2008
@@ -53,14 +53,11 @@
# include <wctype.h> // for iswalpha(), ...
#endif // _RWSTD_NO_WCTYPE_H
-#if defined (_WIN32) || defined (_WIN64)
- // define macros to enable Win98 + WinNT support in <windows.h>
-# define _WIN32_WINNT 0x0410
-# define WINVER 0x400
-# include <windows.h> // for GetLastError(), IsDebuggerPresent()
+#if defined (_WIN32)
+# include <windows.h> // for GetLastError(), OutputDebugString()
#else
# include <dlfcn.h>
-#endif // _WIN{32,64}
+#endif // _WIN32
#include <ios>
#include <iostream>
@@ -451,28 +448,28 @@
// for guard block
static const char guard[] = "\xde\xad\xbe\xef";
- size_t guardsize = sizeof guard - 1;
-
- size_t newbufsize = *buf.pbufsize * 2 + guardsize;
+ const size_t guardsize = sizeof guard - 1;
- if (newbufsize <= buflen + len + guardsize)
- newbufsize = 2 * (buflen + len + 1) + guardsize;
+ size_t newbufsize = *buf.pbufsize * 2;
+ if (newbufsize < 16)
+ newbufsize = 16;
+
+ const size_t requiredsize = buflen + len + 1;
+ if (newbufsize < requiredsize)
+ newbufsize = requiredsize * 2;
// prevent buffer size from exceeding the maximum
if (buf.maxsize < newbufsize)
newbufsize = buf.maxsize;
- if (newbufsize < buflen + len + guardsize)
- guardsize = 0;
-
- if (newbufsize < buflen + len + guardsize) {
+ if (newbufsize < requiredsize) {
#ifdef ENOMEM
errno = ENOMEM;
#endif // ENOMEM
return 0;
}
- char* const newbuf = (char*)malloc (newbufsize);
+ char* const newbuf = (char*)malloc (newbufsize + guardsize);
// return 0 on failure to allocate, let caller deal with it
if (0 == newbuf)
@@ -481,17 +478,19 @@
memcpy (newbuf, *buf.pbuf, buflen);
// append a guard block to the end of the buffer
- memcpy (newbuf + newbufsize - guardsize, guard, guardsize);
+ memcpy (newbuf + newbufsize, guard, guardsize);
if (*buf.pbuf) {
- // verify that we didn't write past the end of the buffer
+ // verify that we didn't write past the end of the buffer and
+ // that the user didn't pass a local or static buffer without
+ // a maxsize format specifier.
RW_ASSERT (0 == memcmp (*buf.pbuf + *buf.pbufsize,
guard, guardsize));
free (*buf.pbuf);
}
*buf.pbuf = newbuf;
- *buf.pbufsize = newbufsize - guardsize;
+ *buf.pbufsize = newbufsize;
}
if (0 != str) {
@@ -625,7 +624,7 @@
RW_ASSERT (0 != *buf.pbuf);
// len = int (strlen (*buf.pbuf));
- len = buf.endoff;
+ len = int (buf.endoff);
spec.param.ptr_ = PARAM (ptr_, pva);
@@ -977,6 +976,7 @@
// over it
fmt += 4;
buf.endoff = *buf.pbuf ? strlen (*buf.pbuf) : 0;
+ RW_ASSERT (buf.endoff < *buf.pbufsize || !*buf.pbuf);
}
else if (*buf.pbuf)
**buf.pbuf = '\0';
@@ -1056,73 +1056,51 @@
char buffer [130]; // big enough for a 128-bit long in base 2
char *end = buffer;
- long upoff = 0;
- const char *pfx = 0;
+ // 7.19.6.1 of ISO/IEC 9899:1999:
+ // The result of converting a zero value with a precision
+ // of zero is no characters.
+ if (spec.prec || val) {
+ const long upoff = 'X' == spec.cvtspec ? 36 : 0;
+ const int base = 1 < spec.base && spec.base < 37 ? spec.base : 10;
+ const bool is_signed = 'd' == spec.cvtspec || 'i' == spec.cvtspec;
+ const bool neg = 0 > val && is_signed;
+
+ ULong uval = ULong (neg ? -val : val);
+
+ do {
+ *end++ = _rw_digits [upoff + uval % base];
+ } while (uval /= base);
- if ('X' == spec.cvtspec)
- upoff = 36;
-
- if (spec.fl_pound) {
- if (16 == spec.base)
- pfx = upoff ? "0X" : "0x";
- else if (8 == spec.base && val)
- pfx = "0";
- }
-
- const int base = 1 < spec.base && spec.base < 37 ? spec.base : 10;
-
- ULong uval;
-
- bool neg;
-
- if (val < 0) {
- neg = 'd' == spec.cvtspec || 'i' == spec.cvtspec;
- uval = ULong (neg ? -val : val);
- }
- else {
- neg = false;
- uval = ULong (val);
- }
-
- do {
- *end++ = _rw_digits [upoff + uval % base];
- } while (uval /= base);
-
- int size = int (end - buffer);
-
- // insert as many zeros as specified by precision
- if (-1 < spec.prec && size < spec.prec) {
+ // insert as many zeros as specified by precision
// FIXME: prevent buffer overrun
- for (int i = size; i != spec.prec; ++i)
+ for (int i = int (end - buffer); i < spec.prec; ++i)
*end++ = '0';
- }
- // insert octal or hex prefix for non-zero values
- if (pfx && val) {
- if (pfx [1])
- *end++ = pfx [1];
- *end++ = pfx [0];
- }
-
- if (neg)
- *end++ = '-';
- else if (spec.fl_plus && ('d' == spec.cvtspec || 'i' == spec.cvtspec))
- *end++ = '+';
-
- if (0 == spec.prec && 0 == val) {
- // 7.19.6.1 of ISO/IEC 9899:1999:
- // The result of converting a zero value with a precision
- // of zero is no characters.
- end = buffer;
+ // insert octal or hex prefix for non-zero values
+ if (spec.fl_pound && val) {
+ switch (spec.base) {
+ case 16:
+ *end++ = upoff ? 'X' : 'x';
+ // fall through
+ case 8:
+ *end++ = '0';
+ break;
+ }
+ }
+
+ if (neg)
+ *end++ = '-';
+ else if (spec.fl_plus && is_signed)
+ *end++ = '+';
}
// not NUL-terminated
RW_ASSERT (buffer <= end);
- size = int (end - buffer);
+ const size_t size = size_t (end - buffer);
- for (char *pc = buffer; pc < end; ++pc) {
+ for (char *pc = buffer; pc < --end; ++pc) {
const char tmp = *pc;
- *pc = *--end;
+ *pc = *end;
*end = tmp;
}
@@ -1132,7 +1110,7 @@
newspec.prec = -1;
// handle justification by formatting the resulting string
- return _rw_fmtstr (newspec, buf, buffer, size_t (size));
+ return _rw_fmtstr (newspec, buf, buffer, size);
}
/********************************************************************/
@@ -1145,79 +1123,62 @@
char buffer [130]; // big enough for a 128-bit long long in base 2
char *end = buffer;
- long upoff = 0;
- const char *pfx = 0;
+ // 7.19.6.1 of ISO/IEC 9899:1999:
+ // The result of converting a zero value with a precision
+ // of zero is no characters.
+ if (spec.prec || val) {
+ const long upoff = 'X' == spec.cvtspec ? 36 : 0;
+ const int base = 1 < spec.base && spec.base < 37 ? spec.base : 10;
+ const bool is_signed = 'd' == spec.cvtspec || 'i' == spec.cvtspec;
+ const bool neg = 0 > val && is_signed;
+
+ typedef unsigned _RWSTD_LONG_LONG ULLong;
+ ULLong uval = ULLong (neg ? -val : val);
+
+ do {
+ *end++ = _rw_digits [upoff + uval % base];
+ } while (uval /= base);
- if ('X' == spec.cvtspec)
- upoff = 36;
-
- if (spec.fl_pound) {
- if (16 == spec.base)
- pfx = upoff ? "0X" : "0x";
- else if (8 == spec.base && val)
- pfx = "0";
- }
-
- const int base = 1 < spec.base && spec.base < 37 ? spec.base : 10;
-
- typedef unsigned _RWSTD_LONG_LONG ULLong;
-
- ULLong uval;
-
- bool neg;
-
- if (val < 0) {
- neg = 'd' == spec.cvtspec || 'i' == spec.cvtspec;
- uval = ULLong (neg ? -val : val);
- }
- else {
- neg = false;
- uval = ULLong (val);
- }
-
- do {
- *end++ = _rw_digits [upoff + uval % base];
- } while (uval /= base);
-
- if (pfx) {
- if (pfx [1])
- *end++ = pfx [1];
- *end++ = pfx [0];
- }
-
- char sign;
-
- if (neg)
- sign = '-';
- else if (spec.fl_plus && ('d' == spec.cvtspec || 'i' == spec.cvtspec))
- sign= '+';
- else
- sign = '\0';
+ // insert as many zeros as specified by precision
+ // FIXME: prevent buffer overrun
+ for (int i = int (end - buffer); i < spec.prec; ++i)
+ *end++ = '0';
- RW_ASSERT (buffer < end);
- size_t size = size_t (end - buffer);
+ // insert octal or hex prefix for non-zero values
+ if (spec.fl_pound && val) {
+ switch (spec.base) {
+ case 16:
+ *end++ = upoff ? 'X' : 'x';
+ // fall through
+ case 8:
+ *end++ = '0';
+ break;
+ }
+ }
- // FIXME: prevent buffer overrun
- if (0 < spec.prec && size < size_t (spec.prec)) {
- for (size_t i = size; i != size_t (spec.prec); ++i)
- *end++ = '0';
+ if (neg)
+ *end++ = '-';
+ else if (spec.fl_plus && is_signed)
+ *end++ = '+';
}
- if (sign)
- *end++ = sign;
-
// not NUL-terminated
- RW_ASSERT (buffer < end);
- size = size_t (end - buffer);
+ RW_ASSERT (buffer <= end);
+ const size_t size = size_t (end - buffer);
- for (char *pc = buffer; pc < end; ++pc) {
+ for (char *pc = buffer; pc < --end; ++pc) {
const char tmp = *pc;
- *pc = *--end;
+ *pc = *end;
*end = tmp;
}
+ // reset precision to -1 (already handled above)
+ FmtSpec newspec (spec);
+ newspec.fl_pound = 0;
+ newspec.prec = -1;
+
// handle justification by formatting the resulting string
- return _rw_fmtstr (spec, buf, buffer, size);
+ return _rw_fmtstr (newspec, buf, buffer, size);
}
#endif // _RWSTD_LONG_LONG
@@ -1569,11 +1530,6 @@
// set the number of digits
newspec.prec = _RWSTD_LONG_SIZE * 2;
- const union {
- const void *ptr;
- const ULong *lptr;
- } uptr = { pptr };
-
int len = 0;
if (newspec.fl_pound) {
@@ -1587,23 +1543,17 @@
newspec.fl_pound = 0;
}
- for (size_t i = 0; i != nelems; ++i) {
- const size_t inx = _rw_big_endian ? nelems - i - 1 : i;
-
- len += _rw_fmtlong (newspec, buf, uptr.lptr [inx]);
+ const union {
+ const void *ptr;
+ const ULong *lptr;
+ } uptr = { pptr };
- if (len < 0) {
- break;
- }
+ for (size_t i = 0; i != nelems; ++i) {
+ const size_t inx = _rw_big_endian ? i : nelems - i - 1;
- // separate pointer components with colons
- int n = 0;
- if (i + 1 < nelems) {
- if (0 == _rw_bufcat (buf, ":", size_t (n = 1))) {
- len = -1;
- break;
- }
- }
+ int n = _rw_fmtlong (newspec, buf, uptr.lptr [inx]);
+ if (n < 0)
+ return -1;
len += n;
}
@@ -1649,7 +1599,7 @@
if (0 == _rw_bufcat (buf, ")", 1))
return -1;
- return buf.endoff - off;
+ return int (buf.endoff - off);
}
/********************************************************************/
@@ -2030,7 +1980,7 @@
// repeated occurrences of the element to conserve
// space and make the string more readable
- const long repeat = pelem - last;
+ const long repeat = long (pelem - last);
if (flags & (A_CHAR | A_WCHAR)) {
// format element into elemstr as a character
@@ -3376,8 +3326,15 @@
va_end (va);
- if (size_t (nchars) <= bufsize)
- memcpy (buf, tmpbuf, size_t (nchars));
+ if (size_t (nchars) < bufsize) {
+ memcpy (buf, tmpbuf, size_t (nchars + 1 /* NUL */));
+ }
+ else {
+ // buffer isn't big enough
+ memcpy (buf, tmpbuf, bufsize);
+ if (bufsize)
+ buf [bufsize - 1] = '\0';
+ }
free (tmpbuf);
@@ -3422,25 +3379,17 @@
// for async-signal safety
FILE* const stdio_file = _RWSTD_REINTERPRET_CAST (FILE*, file);
- nwrote = fwrite (buf, 1, size_t (nchars), stdio_file);
+ nwrote = int (fwrite (buf, 1, size_t (nchars), stdio_file));
// flush in case stderr isn't line-buffered (e.g., when
// it's determined not to refer to a terminal device,
// for example after it has been redirected to a file)
fflush (stdio_file);
-#ifdef _MSC_VER
-
- // IsDebuggerPresent() depends on the macros _WIN32_WINNT
- // and WINVER being appropriately #defined prior to the
- // #inclusion of <windows.h>
- if (IsDebuggerPresent ()) {
-
- // write string to the attached debugger (if any)
- OutputDebugString (buf);
- }
-
-#endif // _MSC_VER
+#ifdef _WIN32
+ // write string to the attached debugger (if any)
+ OutputDebugString (buf);
+#endif // _WIN32
}
}
Modified: stdcxx/branches/4.2.x/tests/src/process.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/src/process.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/src/process.cpp (original)
+++ stdcxx/branches/4.2.x/tests/src/process.cpp Wed Apr 16 10:01:56 2008
@@ -269,12 +269,9 @@
{
RW_ASSERT (0 != cmd);
- char buffer [256];
- char *buf = buffer;
+ char *buf = 0;
- size_t bufsize = sizeof buffer;
-
- rw_vasnprintf (&buf, &bufsize, cmd, va);
+ rw_vasnprintf (&buf, 0, cmd, va);
rw_note (0, "file:" __FILE__, __LINE__, "executing \"%s\"", buf);
@@ -321,8 +318,7 @@
}
- if (buf != buffer)
- free (buf);
+ free (buf);
return ret;
}
@@ -348,12 +344,9 @@
{
RW_ASSERT (0 != cmd);
- char buffer [256];
- char *buf = buffer;
-
- size_t bufsize = sizeof (buffer);
+ char *buf = 0;
- rw_vasnprintf (&buf, &bufsize, cmd, va);
+ rw_vasnprintf (&buf, 0, cmd, va);
rw_pid_t ret = -1;
@@ -392,8 +385,7 @@
#endif // _WIN32
- if (buf != buffer)
- free (buf);
+ free (buf);
return ret;
}
@@ -695,11 +687,11 @@
}
// wait for process termination
- int ret = rw_waitpid (pid, 0, timeout);
- if (pid == ret)
+ rw_pid_t res = rw_waitpid (pid, 0, timeout);
+ if (pid == res)
return 0;
- if (-1 == ret)
+ if (-1 == res)
rw_error (0, __FILE__, __LINE__,
"rw_waitpid (%{P}, 0, %i) failed: errno = %{#m} (%{m})",
pid, timeout);
@@ -733,11 +725,11 @@
}
// wait for process termination
- ret = rw_waitpid (pid, 0, timeout);
- if (pid == ret)
+ rw_pid_t res = rw_waitpid (pid, 0, timeout);
+ if (pid == res)
return 0;
- if (-1 == ret)
+ if (-1 == res)
rw_error (0, __FILE__, __LINE__,
"rw_waitpid (%{P}, 0, %i) failed: errno = %{#m} (%{m})",
pid, timeout);
Modified: stdcxx/branches/4.2.x/tests/src/rand.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/src/rand.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/src/rand.cpp (original)
+++ stdcxx/branches/4.2.x/tests/src/rand.cpp Wed Apr 16 10:01:56 2008
@@ -48,18 +48,17 @@
table32 [TABLE_SIZE - 1] = seed;
- _RWSTD_SIZE_T i;
- _RWSTD_SIZE_T k = 1;
+ _RWSTD_UINT32_T k = 1;
- for (i = 0; i != TABLE_SIZE - 1U; ++i) {
+ for (_RWSTD_SIZE_T i = 0; i != TABLE_SIZE - 1U; ++i) {
const _RWSTD_SIZE_T ii = 21U * i % TABLE_SIZE;
table32 [ii] = k;
k = seed - k;
- seed = _RWSTD_STATIC_CAST (_RWSTD_SIZE_T, table32 [ii]);
+ seed = table32 [ii];
}
- for (i = 0; i != 4U; ++i) {
+ for (_RWSTD_SIZE_T i = 0; i != 4U; ++i) {
for (_RWSTD_SIZE_T ii = 0; ii != TABLE_SIZE; ++ii)
table32 [i] = table32 [i] - table32 [(i + 31U) % TABLE_SIZE];
}
@@ -99,18 +98,17 @@
table64 [TABLE_SIZE - 1] = seed;
- _RWSTD_SIZE_T i;
- _RWSTD_SIZE_T k = 1;
+ _RWSTD_UINT64_T k = 1;
- for (i = 0; i != TABLE_SIZE - 1U; ++i) {
+ for (_RWSTD_SIZE_T i = 0; i != TABLE_SIZE - 1U; ++i) {
const _RWSTD_SIZE_T ii = 21U * i % TABLE_SIZE;
table64 [ii] = k;
k = seed - k;
- seed = _RWSTD_STATIC_CAST (_RWSTD_SIZE_T, table64 [ii]);
+ seed = table64 [ii];
}
- for (i = 0; i != 4U; ++i) {
+ for (_RWSTD_SIZE_T i = 0; i != 4U; ++i) {
for (_RWSTD_SIZE_T ii = 0; ii != TABLE_SIZE; ++ii)
table64 [i] = table64 [i] - table64 [(i + 31U) % TABLE_SIZE];
}
Modified: stdcxx/branches/4.2.x/tests/strings/21.cwctype.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/strings/21.cwctype.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/strings/21.cwctype.cpp (original)
+++ stdcxx/branches/4.2.x/tests/strings/21.cwctype.cpp Wed Apr 16 10:01:56 2008
@@ -763,7 +763,6 @@
{
rw_info (0, 0, 0, "behavior of <cwctype> functions in the \"C\" locale");
- char extra_str [80];
char missing_str [80];
for (int i = 0; i != 256; ++i) {
@@ -794,17 +793,13 @@
SET_MASK_BIT (upper);
SET_MASK_BIT (xdigit);
- const int extra_bits = mask & ~char_mask [i];
+ // C99 standard (7.25.2.1 p2) implicitly allows
+ // defining the extra bits in iswxxx()
const int missing_bits = ~mask & char_mask [i];
- rw_assert (mask == char_mask [i], 0, 0,
- "%#c mask%{?} missing bits %s (%#x)%{;}"
- "%{?} extra bits %s (%#x)%{;}",
- i,
- missing_bits,
- get_bitmask (missing_bits, missing_str), missing_bits,
- extra_bits,
- get_bitmask (extra_bits, extra_str), extra_bits);
+ rw_assert (0 == missing_bits, 0, 0,
+ "%#c mask missing bits %s (%#x)",
+ i, get_bitmask (missing_bits, missing_str), missing_bits);
}
}
@@ -815,14 +810,20 @@
static int
run_test (int, char**)
{
+#ifdef _RWSTD_STRICT_ANSI
+# define RW_DIAG rw_assert
+#else
+# define RW_DIAG rw_warn
+#endif
+
//////////////////////////////////////////////////////////////////
rw_info (0, 0, 0, "checking for the absence of masking macros");
// verify the shadow macros are not #defined (explicitly
// disallowed by 17.4.1.2, p6 and Footnote 159 of C++ '03)
for (unsigned i = 0; cwctype_macros [i]; ++i) {
- rw_assert ('\0' == cwctype_macros [i][0], 0, 0,
- "macro %s unexpectedly #defined", cwctype_macros [i]);
+ RW_DIAG ('\0' == cwctype_macros [i][0], 0, 0,
+ "macro %s unexpectedly #defined", cwctype_macros [i]);
}
//////////////////////////////////////////////////////////////////
@@ -845,9 +846,9 @@
rw_info (0, 0, 0, "%s::%s (%s::wint_t) definition", \
std_name, #function, std_name); \
const int result = std::function (test_wint_t ('a')); \
- rw_assert (-1 != result && !(missing_set & bit_ ## function), \
- 0, __LINE__, "%s::%s (%s::wint_t) not defined", \
- std_name, #function, std_name); \
+ RW_DIAG (-1 != result && !(missing_set & bit_ ## function), \
+ 0, __LINE__, "%s::%s (%s::wint_t) not defined", \
+ std_name, #function, std_name); \
} while (0)
TEST (iswalnum);
@@ -870,8 +871,8 @@
int result = std::wctype ("");
- rw_assert (-1 != result && !(missing_set & bit_wctype), 0, __LINE__,
- "%s::wctype (const char*) not defined", std_name);
+ RW_DIAG (-1 != result && !(missing_set & bit_wctype), 0, __LINE__,
+ "%s::wctype (const char*) not defined", std_name);
// exercise std::iswctype(std::wint_t, std::wctype_t)
@@ -884,9 +885,9 @@
result = std::iswctype (wc, desc);
- rw_assert (-1 != result && !(missing_set & bit_iswctype), 0, __LINE__,
- "%s::iswctype (%1$s::wint_t, %1$s::wctype_t) not defined",
- std_name);
+ RW_DIAG (-1 != result && !(missing_set & bit_iswctype), 0, __LINE__,
+ "%s::iswctype (%1$s::wint_t, %1$s::wctype_t) not defined",
+ std_name);
// exercise std::wctrans(const char*)
rw_info (0, 0, 0,
@@ -896,8 +897,8 @@
// such as in GNU glibc
result = (int)(_RWSTD_PTRDIFF_T)std::wctrans ("");
- rw_assert (-1 != result && !(missing_set & bit_wctrans), 0, __LINE__,
- "%s::wctrans (const char*) not defined", std_name);
+ RW_DIAG (-1 != result && !(missing_set & bit_wctrans), 0, __LINE__,
+ "%s::wctrans (const char*) not defined", std_name);
// exercise std::towctrans(wint_t, wctrans_t)
rw_info (0, 0, 0,
@@ -906,8 +907,8 @@
const test_wctrans_t category = 0;
result = std::towctrans (wc, category);
- rw_assert (-1 != result && !(missing_set & bit_towctrans), 0, __LINE__,
- "%s::towctrans(wint_t, wctrans_t) not defined", std_name);
+ RW_DIAG (-1 != result && !(missing_set & bit_towctrans), 0, __LINE__,
+ "%s::towctrans(wint_t, wctrans_t) not defined", std_name);
//////////////////////////////////////////////////////////////////
if (rw_opt_no_behavior)
Modified: stdcxx/branches/4.2.x/tests/strings/21.string.access.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/strings/21.string.access.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/strings/21.string.access.cpp (original)
+++ stdcxx/branches/4.2.x/tests/strings/21.string.access.cpp Wed Apr 16 10:01:56 2008
@@ -272,7 +272,6 @@
};
const bool success = 1 == rw_match (exp_res, pres, 1);
-
rw_assert (success, 0, tcase.line,
"line %d. %{$FUNCALL} == %{#c}, got %{#c}",
__LINE__, tcase.nres, *pres);
Modified: stdcxx/branches/4.2.x/tests/strings/21.string.cons.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/strings/21.string.cons.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/strings/21.string.cons.cpp (original)
+++ stdcxx/branches/4.2.x/tests/strings/21.string.cons.cpp Wed Apr 16 10:01:56 2008
@@ -53,6 +53,8 @@
static const StringTestCase
void_test_cases [] = {
+#define alloc_test_cases void_test_cases
+
#undef TEST
#define TEST(dummy) { \
__LINE__, -1, -1, -1, -1, -1, \
@@ -75,6 +77,8 @@
static const StringTestCase
cptr_test_cases [] = {
+#define cptr_alloc_test_cases cptr_test_cases
+
#undef TEST
#define TEST(arg, res) { \
__LINE__, -1, -1, -1, -1, -1, \
@@ -166,6 +170,8 @@
static const StringTestCase
cptr_size_test_cases [] = {
+#define cptr_size_alloc_test_cases cptr_size_test_cases
+
#undef TEST
#define TEST(arg, size, res) { \
__LINE__, -1, size, -1, -1, -1, \
@@ -278,7 +284,9 @@
static const StringTestCase
cstr_size_size_test_cases [] = {
-#define range_test_cases cstr_size_size_test_cases
+#define range_test_cases cstr_size_size_test_cases
+#define cstr_size_size_alloc_test_cases cstr_size_size_test_cases
+#define range_alloc_test_cases cstr_size_size_test_cases
#undef TEST
#define TEST(arg, off, size, res, bthrow) { \
@@ -335,6 +343,8 @@
static const StringTestCase
size_val_test_cases [] = {
+#define size_val_alloc_test_cases size_val_test_cases
+
#undef TEST
#define TEST(size, val, res) { \
__LINE__, -1, size, -1, -1, val, \
@@ -1112,13 +1122,19 @@
}
TEST (void),
+ TEST (alloc),
TEST (cptr),
+ TEST (cptr_alloc),
TEST (cstr),
TEST (cptr_size),
+ TEST (cptr_size_alloc),
TEST (cstr_size),
TEST (cstr_size_size),
+ TEST (cstr_size_size_alloc),
TEST (size_val),
+ TEST (size_val_alloc),
TEST (range),
+ TEST (range_alloc),
#undef TEST
#define TEST(sig) { \
Modified: stdcxx/branches/4.2.x/tests/strings/21.string.cons.mt.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/strings/21.string.cons.mt.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/strings/21.string.cons.mt.cpp (original)
+++ stdcxx/branches/4.2.x/tests/strings/21.string.cons.mt.cpp Wed Apr 16 10:01:56 2008
@@ -189,7 +189,7 @@
{
rw_info (0, 0, 0,
"testing std::string with %d thread%{?}s%{;}, "
- "%zu iteration%{?}s%{;} each",
+ "%d iteration%{?}s%{;} each",
rw_opt_nthreads, 1 != rw_opt_nthreads,
rw_opt_nloops, 1 != rw_opt_nloops);
@@ -217,7 +217,7 @@
rw_info (0, 0, 0,
"testing std::wstring with %d thread%{?}s%{;}, "
- "%zu iteration%{?}s%{;} each",
+ "%d iteration%{?}s%{;} each",
rw_opt_nthreads, 1 != rw_opt_nthreads,
rw_opt_nloops, 1 != rw_opt_nloops);
Modified: stdcxx/branches/4.2.x/tests/strings/21.string.iterators.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/strings/21.string.iterators.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/strings/21.string.iterators.cpp (original)
+++ stdcxx/branches/4.2.x/tests/strings/21.string.iterators.cpp Wed Apr 16 10:01:56 2008
@@ -371,36 +371,38 @@
"line %d. %{$FUNCALL} expected non null, got null",
__LINE__);
- // 21.3.6.1
- // if size() is nonzero, the member returns a pointer to the
- // initial element of an array whose first size() elements
- // equal the corresponding elements of the string controlled
- // by *this
- // 21.3.6.3
- // if size() is nonzero, the member returns a pointer to the
- // initial element of an array whose first size() elements
- // equal the corresponding elements of the string controlled
- // by *this
- const std::size_t match =
- rw_match (tcase.res, ret_ptr, tdata.reslen_);
+ if (ret_ptr) {
+ // 21.3.6.1
+ // if size() is nonzero, the member returns a pointer to the
+ // initial element of an array whose first size() elements
+ // equal the corresponding elements of the string controlled
+ // by *this
+ // 21.3.6.3
+ // if size() is nonzero, the member returns a pointer to the
+ // initial element of an array whose first size() elements
+ // equal the corresponding elements of the string controlled
+ // by *this
+ const std::size_t match =
+ rw_match (tcase.res, ret_ptr, tdata.reslen_);
- rw_assert (match == tdata.reslen_, 0, tcase.line,
- "line %d. %{$FUNCALL} expected %{#*s}, "
- "got %{/*.*Gs}, differ at pos %zu",
- __LINE__, int (tdata.reslen_), tdata.res_,
- cwidth, int (s_size), ret_ptr, match);
+ rw_assert (match == tdata.reslen_, 0, tcase.line,
+ "line %d. %{$FUNCALL} expected %{#*s}, "
+ "got %{/*.*Gs}, differ at pos %zu",
+ __LINE__, int (tdata.reslen_), tdata.res_,
+ cwidth, int (s_size), ret_ptr, match);
- if (func.which_ == StringIds::c_str_void) {
+ if (func.which_ == StringIds::c_str_void) {
- // check the last element is equal to char ()
- const char null = char ();
- const bool success =
- (1 == rw_match (&null, &ret_ptr[s_size], 1));
+ // check the last element is equal to char ()
+ const char null = char ();
+ const bool success =
+ (1 == rw_match (&null, &ret_ptr[s_size], 1));
- rw_assert(success, 0, tcase.line,
- "line %d. %{$FUNCALL} expected last element "
- "is a null character %{#c}, got %{#c}",
- __LINE__, null, ret_ptr[s_size]);
+ rw_assert(success, 0, tcase.line,
+ "line %d. %{$FUNCALL} expected last element "
+ "is a null character %{#c}, got %{#c}",
+ __LINE__, null, ret_ptr[s_size]);
+ }
}
}
Modified: stdcxx/branches/4.2.x/tests/strings/21.string.push_back.mt.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/strings/21.string.push_back.mt.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/strings/21.string.push_back.mt.cpp (original)
+++ stdcxx/branches/4.2.x/tests/strings/21.string.push_back.mt.cpp Wed Apr 16 10:01:56 2008
@@ -110,7 +110,7 @@
static int
run_test (int, char**)
{
- rw_info (0, 0, 0, "running %d thread%{?}s%{;}, %zu iteration%{?}s%{;} each",
+ rw_info (0, 0, 0, "running %d thread%{?}s%{;}, %d iteration%{?}s%{;} each",
rw_opt_nthreads, 1 != rw_opt_nthreads,
rw_opt_nloops, 1 != rw_opt_nloops);
Modified: stdcxx/branches/4.2.x/tests/tr1.util/2.smartptr.shared.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/tr1.util/2.smartptr.shared.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/tr1.util/2.smartptr.shared.cpp (original)
+++ stdcxx/branches/4.2.x/tests/tr1.util/2.smartptr.shared.cpp Wed Apr 16 10:01:56 2008
@@ -23,7 +23,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1994-2006 Rogue Wave Software.
+ * Copyright 1994-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -322,13 +322,35 @@
#endif // ILL_FORMED
+
{ // template <class U> shared_ptr(const shared_ptr<U>&)
Derived<int>* const pd = new Derived<int>;
- std::tr1::shared_ptr<volatile Derived<int> > ptr_d (pd);
- std::tr1::shared_ptr<volatile Base_0<int> > ptr_0 (ptr_d);
- std::tr1::shared_ptr<volatile Base_1<int> > ptr_1 (ptr_d);
- std::tr1::shared_ptr<volatile Base<int> > ptr_b (ptr_d);
+#if !defined (_RWSTD_HP_aCC_MAJOR) || 6 <= _RWSTD_HP_aCC_MAJOR \
+ || 3 == _RWSTD_HP_aCC_MAJOR && __hpxstd98
+
+ typedef volatile Derived<int> v_Derived_i;
+ typedef volatile Base_0<int> v_Base_0_i;
+ typedef volatile Base_1<int> v_Base_1_i;
+ typedef volatile Base<int> v_Base_i;
+
+#else // HP aCC
+
+ // volatile disabled for HP aCC 3 without the +hpxstd98
+ // option available starting with aCC 3.74 to work around
+ // a compiler bug (see STDCXX-615)
+
+ typedef /* volatile */ Derived<int> v_Derived_i;
+ typedef /* volatile */ Base_0<int> v_Base_0_i;
+ typedef /* volatile */ Base_1<int> v_Base_1_i;
+ typedef /* volatile */ Base<int> v_Base_i;
+
+#endif // HP aCC
+
+ std::tr1::shared_ptr<v_Derived_i> ptr_d (pd);
+ std::tr1::shared_ptr<v_Base_0_i> ptr_0 (ptr_d);
+ std::tr1::shared_ptr<v_Base_1_i> ptr_1 (ptr_d);
+ std::tr1::shared_ptr<v_Base_i> ptr_b (ptr_d);
rw_assert (pd == ptr_d.get (), 0, __LINE__,
"shared_ptr<Derived>(Derived* = %#p).get() == %#p, got %#p",
@@ -338,19 +360,19 @@
"shared_ptr<Base_0>(const shared_ptr<Derived>(%#p))"
".get() == %#p, got %#p",
ptr_d.get (),
- (volatile Base_0<int>*)ptr_d.get (), ptr_0.get ());
+ (v_Base_0_i*)ptr_d.get (), ptr_0.get ());
rw_assert (ptr_d.get () == ptr_1.get (), 0, __LINE__,
"shared_ptr<Base_1>(const shared_ptr<Derived>(%#p))"
".get() == %#p, got %#p",
ptr_d.get (),
- (volatile Base_1<int>*)ptr_d.get (), ptr_1.get ());
+ (v_Base_1_i*)ptr_d.get (), ptr_1.get ());
rw_assert (ptr_d.get () == ptr_b.get (), 0, __LINE__,
"shared_ptr<Base>(const shared_ptr<Derived>(%#p))"
".get() == %#p, got %#p",
ptr_d.get (),
- (volatile Base<int>*)ptr_d.get (), ptr_b.get ());
+ (v_Base_i*)ptr_d.get (), ptr_b.get ());
rw_assert (4 == ptr_d.use_count (), 0, __LINE__, "");
rw_assert (ptr_d.use_count () == ptr_0.use_count (), 0, __LINE__, "");
Modified: stdcxx/branches/4.2.x/tests/utilities/20.temp.buffer.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/utilities/20.temp.buffer.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/utilities/20.temp.buffer.cpp (original)
+++ stdcxx/branches/4.2.x/tests/utilities/20.temp.buffer.cpp Wed Apr 16 10:01:56 2008
@@ -39,6 +39,7 @@
#endif
#include <rw_new.h>
+#include <rw_printf.h>
#include <driver.h>
#ifndef _RWSTD_NO_SETRLIMIT
@@ -245,7 +246,7 @@
{
if (0 == tname) {
static char buf [40];
- std::sprintf (buf, "char[%u]", unsigned (sizeof (T)));
+ rw_sprintf (buf, "char[%zu]", sizeof (T));
tname = buf;
}
@@ -264,13 +265,13 @@
"got { %#p, %td }",
tname, nelems, pa.first, pa.second);
- for (std::size_t i = 2; i < sizeof (T); i <<= 1) {
+ for (std::size_t i = 2; i && i < sizeof (T); i <<= 1) {
// exercise arithmetic overflow (not to be confused
// with the out-of-memory tests below)
// attempts to allocate space for an array of elements
// with a total size that exceeds SIZE_MAX must fail
- nelems = _RWSTD_PTRDIFF_MAX / i + 1;
+ nelems = (_RWSTD_PTRDIFF_MAX / i) + 1;
pa = std::get_temporary_buffer<T>(nelems);
Modified: stdcxx/branches/4.2.x/tests/utilities/20.temp.buffer.mt.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/utilities/20.temp.buffer.mt.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/utilities/20.temp.buffer.mt.cpp (original)
+++ stdcxx/branches/4.2.x/tests/utilities/20.temp.buffer.mt.cpp Wed Apr 16 10:01:56 2008
@@ -126,7 +126,7 @@
{
thr_args* const targs = (thr_args*)arg;
- std::printf ("thread %d starting...\n", targs->threadno_);
+ std::printf ("thread %ld starting...\n", targs->threadno_);
#ifndef _RWSTD_INT64_T
Modified: stdcxx/branches/4.2.x/util/aliases.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/aliases.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/aliases.cpp (original)
+++ stdcxx/branches/4.2.x/util/aliases.cpp Wed Apr 16 10:01:56 2008
@@ -22,10 +22,19 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2007 Rogue Wave Software, Inc.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
+#include <rw/_defs.h>
+
+#ifdef _RWSTD_EDG_ECCP
+ // disable error #450-D: the type "long long" is nonstandard
+ // issued for uses of the type in Linux system headers (e.g.,
+ // pthreadtypes.h)
+# pragma diag_suppress 450
+#endif // vanilla EDG eccp demo
+
#ifdef __linux__
// on Linux define _XOPEN_SOURCE to get CODESET defined in <langinfo.h>
# define _XOPEN_SOURCE 500 /* SUS conformance */
@@ -34,8 +43,6 @@
#include "diagnostic.h"
-#include <rw/_defs.h>
-
#include <cassert> // for assert()
#include <cerrno> // for errno
#include <cstdlib>
@@ -536,12 +543,12 @@
{
static char* slocname = 0;
- static int size = 0; // the number of elements in the array
- static int total_size = 5120; // the size of the array
+ static std::size_t size = 0; // number of elements in array
+ static std::size_t total_size = 5120; // the size of the array
// allocate first time through
if (!slocname) {
- slocname = (char*)std::malloc (16384);
+ slocname = new char [16384];
*slocname = '\0';
}
@@ -594,8 +601,8 @@
const int ret = std::system (cmd);
if (ret)
- issue_diag (W_NOTSUP, false, 0, "call to system(\"%s\") failed: %s\n",
- cmd, std::strerror (errno));
+ issue_diag (W_NOTSUP, false, 0, "call to system(\"%s\") failed: %s\n",
+ cmd, std::strerror (errno));
// open file containing the list of installed locales
std::FILE *f = std::fopen (fname, "r");
Modified: stdcxx/branches/4.2.x/util/collate.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/collate.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/collate.cpp (original)
+++ stdcxx/branches/4.2.x/util/collate.cpp Wed Apr 16 10:01:56 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2006 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -1560,7 +1560,7 @@
{
int nesting_level = 0;
- while (true) {
+ do {
// fetch next token
next = scanner_.next_token();
@@ -1680,8 +1680,9 @@
break;
}
}
-
+ while (Scanner::tok_end_tokens != next.token);
}
+
// The task of preprocess_order is to parse and model the content of the
// order sections in the input files
Modified: stdcxx/branches/4.2.x/util/ctype.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/ctype.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/ctype.cpp (original)
+++ stdcxx/branches/4.2.x/util/ctype.cpp Wed Apr 16 10:01:56 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2006 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -252,7 +252,7 @@
num++;
}
else {
- len = std::sprintf (next_num, "%ld", num++);
+ len = std::sprintf (next_num, "%lu", num++);
}
sym_name = begin;
Modified: stdcxx/branches/4.2.x/util/def.h
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/def.h?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/def.h (original)
+++ stdcxx/branches/4.2.x/util/def.h Wed Apr 16 10:01:56 2008
@@ -92,12 +92,12 @@
// was the content of the locale definition file scanned ahead
bool scan_ahead_;
- typedef Scanner::token_t token_t;
+ typedef Scanner::token_t token_t;
typedef std::pair<token_t,token_t> token_pair_t;
- typedef std::list<token_t> token_list_t;
+ typedef std::list<token_t> token_list_t;
typedef std::pair<token_t,token_list_t> collate_entry_t;
typedef std::pair<token_t,token_list_t> collate_elem_t;
- typedef std::list<collate_entry_t> collate_entry_list_t;
+ typedef std::list<collate_entry_t> collate_entry_list_t;
struct collate_section_t;
struct collate_section_t {
@@ -401,9 +401,9 @@
typedef std::map<wchar_t,std::list<std::string> > xlit_map_t;
typedef std::map<wchar_t, unsigned int> xlit_data_offset_map_t;
typedef std::map<unsigned int,xlit_offset_table_t> xlit_table_map_t;
- xlit_map_t xlit_map_;
- xlit_data_offset_map_t xlit_data_offset_map_;
- xlit_table_map_t xlit_table_map_;
+ xlit_map_t xlit_map_;
+ xlit_data_offset_map_t xlit_data_offset_map_;
+ xlit_table_map_t xlit_table_map_;
// the collate_info_t struct contains information concerning the collation
// of each character
Modified: stdcxx/branches/4.2.x/util/display.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/display.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/display.cpp (original)
+++ stdcxx/branches/4.2.x/util/display.cpp Wed Apr 16 10:01:56 2008
@@ -118,8 +118,8 @@
{
(void)&argv;
- puts ("NAME STATUS WARN ASSERTS FAILED PERCNT"
- " USER SYS REAL");
+ puts ("NAME STATUS WARN ASSERTS "
+ "FAILED PERCNT USER SYS REAL");
}
@@ -144,7 +144,7 @@
assert (0 == defaults->verbose);
- printf ("%-30.30s ", target_name);
+ printf ("%-40.40s ", target_name);
/* flush to prevent killing a signal from not displaying the text */
fflush (stdout);
Modified: stdcxx/branches/4.2.x/util/locale.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/locale.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/locale.cpp (original)
+++ stdcxx/branches/4.2.x/util/locale.cpp Wed Apr 16 10:01:56 2008
@@ -22,16 +22,24 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2006 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
+#include <rw/_defs.h>
+
#if defined (__linux__) && !defined (_XOPEN_SOURCE)
// on Linux define _XOPEN_SOURCE to get CODESET defined in <langinfo.h>
# define _XOPEN_SOURCE 500 /* Single UNIX conformance */
#endif // __linux__
-#include <rw/_defs.h>
+#ifdef _RWSTD_EDG_ECCP
+ // disable error #450-D: the type "long long" is nonstandard
+ // issued for uses of the type in Linux system headers (e.g.,
+ // pthreadtypes.h)
+# pragma diag_suppress 450
+#endif // vanilla EDG eccp demo
+
#include _RWSTD_SYS_TYPES_H
#if _RWSTD_PATH_SEP == '/'
@@ -922,7 +930,7 @@
// sym is sized at 13 because there will never be more then
// 99,999 collating elements
char sym [13];
- std::sprintf (sym, "<RW_CE_%d>", ce_num++);
+ std::sprintf (sym, "<RW_CE_%u>", ce_num++);
ce_map.insert (std::make_pair (sym, elem));
std::cout << "collating-element " << sym << " from \"";
@@ -2610,7 +2618,7 @@
print_ellipsis (mbchar, last_byte, last_ucs4, last_wchar);
// process subsequent maps
- for (std::size_t i = 0; i != UCHAR_MAX + 1U; ++i) {
+ for (unsigned i = 0; i != UCHAR_MAX + 1U; ++i) {
if (UINT_MAX == tab [i]) {
// invalid multibyte sequence (i.e., unused slot)
Modified: stdcxx/branches/4.2.x/util/locale_stub.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/locale_stub.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/locale_stub.cpp (original)
+++ stdcxx/branches/4.2.x/util/locale_stub.cpp Wed Apr 16 10:01:56 2008
@@ -59,7 +59,10 @@
slash = std::strrchr (cmdline, '\\');
}
- std::strcpy (slash ? slash + 1 : cmdline, localedef);
+ if (slash)
+ std::strcpy (slash + 1, localedef);
+ else
+ std::strcpy (cmdline, localedef);
std::strcat (cmdline, " ");
std::strcat (cmdline, argv_1);
Modified: stdcxx/branches/4.2.x/util/memchk.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/memchk.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/memchk.cpp (original)
+++ stdcxx/branches/4.2.x/util/memchk.cpp Wed Apr 16 10:01:56 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2006 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -66,6 +66,17 @@
# define P_tmpdir _P_tmpdir
# endif
#endif // P_tmpdir
+
+
+#if defined (_RWSTD_EDG_ECCP) && !defined (_WIN32)
+
+extern "C" {
+
+int getpagesize ();
+
+} // extern "C"
+
+#endif // vanilla EDG eccp demo on UNIX
static int page_size ()
Modified: stdcxx/branches/4.2.x/util/path.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/path.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/path.cpp (original)
+++ stdcxx/branches/4.2.x/util/path.cpp Wed Apr 16 10:01:56 2008
@@ -26,17 +26,6 @@
*
**************************************************************************/
-#include "path.h"
-
-#include "diagnostic.h" // for issue_diag()
-
-#include <cassert> // for assert()
-#include <cerrno> // for ERANGE
-#include <cstdlib> // for getenv()
-#include <cstring> // for strerror()
-#include <string> // for string
-
-
#ifndef _MSC_VER
# ifdef __linux__
// for symlink()
@@ -57,6 +46,17 @@
# include <sys/types.h>
# include <sys/stat.h> // for struct stat, stat()
#endif // _MSC_VER
+
+
+#include "path.h"
+
+#include "diagnostic.h" // for issue_diag()
+
+#include <cassert> // for assert()
+#include <cerrno> // for ERANGE
+#include <cstdlib> // for getenv()
+#include <cstring> // for strerror()
+#include <string> // for string
static char* get_cwd (char* s, std::size_t l)
Modified: stdcxx/branches/4.2.x/util/scanner.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/scanner.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/scanner.cpp (original)
+++ stdcxx/branches/4.2.x/util/scanner.cpp Wed Apr 16 10:01:56 2008
@@ -45,8 +45,8 @@
{
ScannerContext (const char*, char = '#', char = '\\');
- std::ifstream file; // file stream object
- std::string filename; // filename
+ std::ifstream file; // file stream object
+ std::string filename; // filename
// comment and escape for current file
char comment_char;
Modified: stdcxx/branches/4.2.x/util/scanner.h
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/scanner.h?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/scanner.h (original)
+++ stdcxx/branches/4.2.x/util/scanner.h Wed Apr 16 10:01:56 2008
@@ -191,7 +191,7 @@
virtual ~Scanner();
// public interface
- token_t next_token ();
+ token_t next_token ();
void open (std::string, char = '#', char = '\\');
Modified: stdcxx/branches/4.2.x/util/time.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/util/time.cpp?rev=648752&r1=648751&r2=648752&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/util/time.cpp (original)
+++ stdcxx/branches/4.2.x/util/time.cpp Wed Apr 16 10:01:56 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2006 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -67,12 +67,24 @@
// now get the offset
tokp = std::strtok (0, ":");
+ if (0 == tokp)
+ issue_diag (E_SYNTAX, true, &tok,
+ "expected ':' in era definition\n");
+
+ assert (0 != tokp);
+
std::sscanf (tokp, "%d", &tmp_era.era_out.offset);
if (direction == '-')
tmp_era.era_out.offset *= -1;
// now get the start date
tokp = std::strtok (0, ":");
+ if (0 == tokp)
+ issue_diag (E_SYNTAX, true, &tok,
+ "expected ':' in era definition\n");
+
+ assert (0 != tokp);
+
unsigned int tmp_mon, tmp_day;
std::sscanf (tokp, "%d/%u/%u", &tmp_era.era_out.year[0],
&tmp_mon, &tmp_day);
@@ -83,6 +95,12 @@
// now get the end date (this may be the beginning or end of time
tokp = std::strtok (0, ":");
+ if (0 == tokp)
+ issue_diag (E_SYNTAX, true, &tok,
+ "expected ':' in era definition\n");
+
+ assert (0 != tokp);
+
if (std::strcmp (tokp, "-*") == 0) {
tmp_era.era_out.year[1] = _RWSTD_INT_MIN;
tmp_era.era_out.month[1] = _RWSTD_CHAR_MIN;