
|
If you were logged in you would be able to see more operations.
|
|
|
|
Time Tracking:
|
|
Original Estimate:
|
8h
|
|
|
Remaining Estimate:
|
2h
|
|
|
Time Spent:
|
6h
|
|
|
|
|
File Attachments:
|
|
|
Environment:
|
gcc version 4.1.1 20070105 (Red Hat 4.1.1-51)
|
|
Issue Links:
|
dependent
|
|
|
|
This issue is depended upon by:
|
|
STDCXX-333
[gcc 3.2.3/Linux] std::wfilebuf extracts more than 1 character from a 1 byte file
|
|
|
|
|
|
|
| Severity: |
Incorrect Behavior
|
| Resolution Date: |
12/Mar/08 11:03 PM
|
When compiled with gcc 4.1.1 on Linux the program below runs successfully to completion as it should. When compiled with stdcxx the facet returns a to_next value that is greater than the number of internal (wchar_t) characters actually produced by the conversion and consequently the program aborts.
$ cat t.cpp && make t && ./t
#include <cassert>
#include <cwchar>
#include <locale>
int main ()
{
const std::locale utf8 ("en_US.UTF-8");
typedef std::codecvt<wchar_t, char, std::mbstate_t> UTF8_Cvt;
const UTF8_Cvt &cvt = std::use_facet<UTF8_Cvt>(utf8);
const char src[] = "abc";
wchar_t dst [2] = { L'\0' };
const char* from_next;
wchar_t* to_next;
std::mbstate_t state = std::mbstate_t ();
const std::codecvt_base::result res =
cvt.in (state,
src, src + 1, from_next,
dst, dst + 2, to_next);
assert (1 == from_next - src);
assert (1 == to_next - dst);
assert ('a' == dst [0]);
}
gcc -c -I/home/mbrown/stdcxx/include/ansi -D_RWSTDDEBUG -I/home/mbrown/stdcxx/include -I/build/mbrown/stdcxx-gcc-4.1.1-11S/include -I/home/mbrown/stdcxx/examples/include -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp
t.cpp: In function 'int main()':
t.cpp:21: warning: unused variable 'res'
gcc t.o -o t -L/build/mbrown/stdcxx-gcc-4.1.1-11S/lib -lstd11S -lsupc++ -lm
t: t.cpp:26: int main(): Assertion `1 == from_next - src' failed.
Aborted
|
|
Description
|
When compiled with gcc 4.1.1 on Linux the program below runs successfully to completion as it should. When compiled with stdcxx the facet returns a to_next value that is greater than the number of internal (wchar_t) characters actually produced by the conversion and consequently the program aborts.
$ cat t.cpp && make t && ./t
#include <cassert>
#include <cwchar>
#include <locale>
int main ()
{
const std::locale utf8 ("en_US.UTF-8");
typedef std::codecvt<wchar_t, char, std::mbstate_t> UTF8_Cvt;
const UTF8_Cvt &cvt = std::use_facet<UTF8_Cvt>(utf8);
const char src[] = "abc";
wchar_t dst [2] = { L'\0' };
const char* from_next;
wchar_t* to_next;
std::mbstate_t state = std::mbstate_t ();
const std::codecvt_base::result res =
cvt.in (state,
src, src + 1, from_next,
dst, dst + 2, to_next);
assert (1 == from_next - src);
assert (1 == to_next - dst);
assert ('a' == dst [0]);
}
gcc -c -I/home/mbrown/stdcxx/include/ansi -D_RWSTDDEBUG -I/home/mbrown/stdcxx/include -I/build/mbrown/stdcxx-gcc-4.1.1-11S/include -I/home/mbrown/stdcxx/examples/include -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp
t.cpp: In function 'int main()':
t.cpp:21: warning: unused variable 'res'
gcc t.o -o t -L/build/mbrown/stdcxx-gcc-4.1.1-11S/lib -lstd11S -lsupc++ -lm
t: t.cpp:26: int main(): Assertion `1 == from_next - src' failed.
Aborted
|
Show » |
made changes - 04/Jun/07 11:42 PM
| Field |
Original Value |
New Value |
|
Link
|
|
This issue is depended upon by STDCXX-333
[ STDCXX-333
]
|
made changes - 04/Jun/07 11:48 PM
|
Assignee
|
|
Martin Sebor
[ sebor
]
|
made changes - 04/Jun/07 11:49 PM
|
Fix Version/s
|
|
4.2
[ 12311945
]
|
|
Priority
|
Major
[ 3
]
|
Critical
[ 2
]
|
made changes - 10/Oct/07 07:04 PM
|
Severity
|
|
Incorrect Behavior
|
|
Fix Version/s
|
4.2
[ 12311945
]
|
|
|
Fix Version/s
|
|
4.2.1
[ 12312690
]
|
made changes - 21/Jan/08 06:00 PM
|
Remaining Estimate
|
|
8h
[ 28800
]
|
|
Original Estimate
|
|
8h
[ 28800
]
|
made changes - 23/Jan/08 05:36 AM
|
Description
|
When compiled with gcc 4.1.1 on Linux the program below runs successfully to completion as it should. When compiled with stdcxx the facet returns a to_next value that is greater than the number of internal (wchar_t) characters actually produced by the conversion and consequently the program aborts.
$ cat t.cpp && make t && ./t
#include <cassert>
#include <cwchar>
#include <locale>
int main ()
{
const std::locale utf8 ("en_US.UTF-8");
typedef std::codecvt<wchar_t, char, std::mbstate_t> UTF8_Cvt;
const UTF8_Cvt &cvt = std::use_facet<UTF8_Cvt>(utf8);
const char src[] = "abc";
wchar_t dst [2] = { L'\0' };
const char* from_next;
wchar_t* to_next;
std::mbstate_t state = std::mbstate_t ();
const std::codecvt_base::result res =
cvt.in (state,
src, src + 1, from_next,
dst, dst + 2, to_next);
assert (1 == from_next - src);
assert (1 == to_next - dst);
assert ('a' == dst [0]);
}
gcc -c -I/home/mbrown/stdcxx/include/ansi -D_RWSTDDEBUG -I/home/mbrown/stdcxx/include -I/build/mbrown/stdcxx-gcc-4.1.1-11S/include -I/home/mbrown/stdcxx/examples/include -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp
t.cpp: In function 'int main()':
t.cpp:21: warning: unused variable 'res'
gcc t.o -o t -L/build/mbrown/stdcxx-gcc-4.1.1-11S/lib -lstd11S -lsupc++ -lm
t: t.cpp:26: int main(): Assertion `1 == from_next - src' failed.
Aborted
|
When compiled with gcc 4.1.1 on Linux the program below runs successfully to completion as it should. When compiled with stdcxx the facet returns a to_next value that is greater than the number of internal (wchar_t) characters actually produced by the conversion and consequently the program aborts.
{code}
$ cat t.cpp && make t && ./t
#include <cassert>
#include <cwchar>
#include <locale>
int main ()
{
const std::locale utf8 ("en_US.UTF-8");
typedef std::codecvt<wchar_t, char, std::mbstate_t> UTF8_Cvt;
const UTF8_Cvt &cvt = std::use_facet<UTF8_Cvt>(utf8);
const char src[] = "abc";
wchar_t dst [2] = { L'\0' };
const char* from_next;
wchar_t* to_next;
std::mbstate_t state = std::mbstate_t ();
const std::codecvt_base::result res =
cvt.in (state,
src, src + 1, from_next,
dst, dst + 2, to_next);
assert (1 == from_next - src);
assert (1 == to_next - dst);
assert ('a' == dst [0]);
}
gcc -c -I/home/mbrown/stdcxx/include/ansi -D_RWSTDDEBUG -I/home/mbrown/stdcxx/include -I/build/mbrown/stdcxx-gcc-4.1.1-11S/include -I/home/mbrown/stdcxx/examples/include -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp
t.cpp: In function 'int main()':
t.cpp:21: warning: unused variable 'res'
gcc t.o -o t -L/build/mbrown/stdcxx-gcc-4.1.1-11S/lib -lstd11S -lsupc++ -lm
t: t.cpp:26: int main(): Assertion `1 == from_next - src' failed.
Aborted
|
made changes - 23/Jan/08 05:38 AM
|
Description
|
When compiled with gcc 4.1.1 on Linux the program below runs successfully to completion as it should. When compiled with stdcxx the facet returns a to_next value that is greater than the number of internal (wchar_t) characters actually produced by the conversion and consequently the program aborts.
{code}
$ cat t.cpp && make t && ./t
#include <cassert>
#include <cwchar>
#include <locale>
int main ()
{
const std::locale utf8 ("en_US.UTF-8");
typedef std::codecvt<wchar_t, char, std::mbstate_t> UTF8_Cvt;
const UTF8_Cvt &cvt = std::use_facet<UTF8_Cvt>(utf8);
const char src[] = "abc";
wchar_t dst [2] = { L'\0' };
const char* from_next;
wchar_t* to_next;
std::mbstate_t state = std::mbstate_t ();
const std::codecvt_base::result res =
cvt.in (state,
src, src + 1, from_next,
dst, dst + 2, to_next);
assert (1 == from_next - src);
assert (1 == to_next - dst);
assert ('a' == dst [0]);
}
gcc -c -I/home/mbrown/stdcxx/include/ansi -D_RWSTDDEBUG -I/home/mbrown/stdcxx/include -I/build/mbrown/stdcxx-gcc-4.1.1-11S/include -I/home/mbrown/stdcxx/examples/include -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp
t.cpp: In function 'int main()':
t.cpp:21: warning: unused variable 'res'
gcc t.o -o t -L/build/mbrown/stdcxx-gcc-4.1.1-11S/lib -lstd11S -lsupc++ -lm
t: t.cpp:26: int main(): Assertion `1 == from_next - src' failed.
Aborted
|
When compiled with gcc 4.1.1 on Linux the program below runs successfully to completion as it should. When compiled with stdcxx the facet returns a to_next value that is greater than the number of internal (wchar_t) characters actually produced by the conversion and consequently the program aborts.
{code}
$ cat t.cpp && make t && ./t
#include <cassert>
#include <cwchar>
#include <locale>
int main ()
{
const std::locale utf8 ("en_US.UTF-8");
typedef std::codecvt<wchar_t, char, std::mbstate_t> UTF8_Cvt;
const UTF8_Cvt &cvt = std::use_facet<UTF8_Cvt>(utf8);
const char src[] = "abc";
wchar_t dst [2] = { L'\0' };
const char* from_next;
wchar_t* to_next;
std::mbstate_t state = std::mbstate_t ();
const std::codecvt_base::result res =
cvt.in (state,
src, src + 1, from_next,
dst, dst + 2, to_next);
assert (1 == from_next - src);
assert (1 == to_next - dst);
assert ('a' == dst [0]);
}
gcc -c -I/home/mbrown/stdcxx/include/ansi -D_RWSTDDEBUG -I/home/mbrown/stdcxx/include -I/build/mbrown/stdcxx-gcc-4.1.1-11S/include -I/home/mbrown/stdcxx/examples/include -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp
t.cpp: In function 'int main()':
t.cpp:21: warning: unused variable 'res'
gcc t.o -o t -L/build/mbrown/stdcxx-gcc-4.1.1-11S/lib -lstd11S -lsupc++ -lm
t: t.cpp:26: int main(): Assertion `1 == from_next - src' failed.
Aborted
{code}
|
made changes - 12/Mar/08 10:10 PM
|
Status
|
Open
[ 1
]
|
In Progress
[ 3
]
|
made changes - 12/Mar/08 11:03 PM
|
Resolution
|
|
Fixed
[ 1
]
|
|
Status
|
In Progress
[ 3
]
|
Resolved
[ 5
]
|
made changes - 17/Apr/08 02:31 PM
|
Affects Version/s
|
|
4.1.4
[ 12310693
]
|
|
Affects Version/s
|
|
4.2.0
[ 12311945
]
|
made changes - 17/Apr/08 02:33 PM
|
Time Spent
|
|
6h
[ 21600
]
|
|
Remaining Estimate
|
8h
[ 28800
]
|
2h
[ 7200
]
|
|