Skip to content

Commit e62b5f7

Browse files
author
kroening
committed
fix for reading strings with zeros from goto binaries
git-svn-id: svn+ssh://svn.cprover.org/srv/svn/cbmc/trunk@4658 6afb6bc1-c8e4-404c-8f48-9ae832c5b171
1 parent 7aef0a1 commit e62b5f7

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

src/util/irep_serialization.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -323,27 +323,22 @@ Function: irep_serializationt::read_gb_string
323323
irep_idt irep_serializationt::read_gb_string(std::istream &in)
324324
{
325325
char c;
326-
size_t i=0;
326+
size_t length=0;
327327

328328
while((c = in.get()) != 0)
329329
{
330-
if(i>=read_buffer.size())
330+
if(length>=read_buffer.size())
331331
read_buffer.resize(read_buffer.size()*2, 0);
332332

333333
if(c=='\\') // escaped chars
334-
read_buffer[i] = in.get();
334+
read_buffer[length] = in.get();
335335
else
336-
read_buffer[i] = c;
336+
read_buffer[length] = c;
337337

338-
i++;
338+
length++;
339339
}
340-
341-
if(i>=read_buffer.size())
342-
read_buffer.resize(read_buffer.size()*2, 0);
343-
344-
read_buffer[i] = 0;
345-
346-
return irep_idt(&(read_buffer[0]));
340+
341+
return irep_idt(std::string(read_buffer.data(), length));
347342
}
348343

349344
/*******************************************************************\

0 commit comments

Comments
 (0)