
Der String ist ist 26+9 Zeichen Lang, also 35.test/unittest/testfileinfo.cpp:43 hat geschrieben:Code: Alles auswählen
//select a sign from SignSource per random Builder += Dedupe::Test::SignSource[ CreateRandomInt( 0, Dedupe::Test::SignSource.size() ) ];
SignSource.size() gibt 35 zurück, du erstellst also eine Zufallszahl zwischen [0, 35]. Wenn du dann tatsächlich mit 35 indizierst, greifst du auf das 36e Zeichen zu, das die Null ist: '\0'. Das erstellt natürlich Zufallsnamen, deren Name eine 0 enthält und deswegen verkürzt ist.
Indizierst du richtig, dann funktionierts:
Code: Alles auswählen
//select a sign from SignSource per random
Builder += Dedupe::Test::SignSource[
CreateRandomInt( 0, Dedupe::Test::SignSource.size()-1 ) ];

(Dank geht an GDB:)
Code: Alles auswählen
$ gdb ./dedupe-dirtytest
GNU gdb (GDB) Fedora (7.3-44.fc15)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/alexander/Programming/c_cpp/dedupe/dedupe-svn/build/dedupe-dirtytest...done.
(gdb) break /home/alexander/dedupe-svn/test/unittest/testfileinfo.cpp:137
Breakpoint 4 at 0x7ffff7bcf019: file /home/alexander/dedupe-svn/test/unittest/testfileinfo.cpp, line 137.
(gdb) r
Starting program: /home/alexander/Programming/c_cpp/dedupe/dedupe-svn/build/dedupe-dirtytest
[Thread debugging using libthread_db enabled]
Breakpoint 4, Dedupe::Test::FileInfoFixture::CreateFile (this=0x7fffffffdf60,
IncomingPath=..., IncomingFilename=..., FileSize=1000)
at /home/alexander/dedupe-svn/test/unittest/testfileinfo.cpp:137
137 std::cerr << "ERROR Could not open file: " << Path << std::endl;
(gdb) print IncomingPath
$1 = {m_pathname = "a2\000\065/hcv1/3ndem"}
(gdb) k
Kill the program being debugged? (y or n) y