使用PdfMemDocument PoDoFo c ++堆栈粉碎错误

时间:2017-03-07 13:06:50

标签: c++ podofo

我是在c ++中使用PoDoFo的新手,但我在使用PdfMemDocument时遇到了问题。似乎lib中存在一个错误,但我不确定。

我的代码:

PoDoFo::PdfMemDocument document;

long len = buffer.size();
document.Load( reinterpret_cast<char*>( buffer.getBuffer() ) , len );

for (int pn = 0; pn < document.GetPageCount(); ++pn)
{
   auto* page = document.GetPage( pn );
   page->SetRotation( rotation );
}

PoDoFo::PdfOutputDevice output( reinterpret_cast<char*>( buffer.getBuffer() ), buffer.size() );
document.Write( &output );
output.Read( reinterpret_cast<char*>( buffer.getBuffer() ), buffer.size() );
buffer.setSize( output.GetLength() );

缓冲区包含正确的数据。我测试过了。程序完成时发生堆栈错误。 堆栈跟踪:

#0 0xf7710be9 in __kernel_vsyscall ()
#1 0xf673dea9 in raise () from /lib/i386-linux-gnu/libc.so.6
#2 0xf673f4d8 in abort () from /lib/i386-linux-gnu/libc.so.6
#3 0xf677937c in ?? () from /lib/i386-linux-gnu/libc.so.6
#4 0xf6809548 in __fortify_fail () from /lib/i386-linux-gnu/libc.so.6
#5 0xf68094d8 in __stack_chk_fail () from /lib/i386-linux-gnu/libc.so.6
#60x0805af74 in __stack_chk_fail_local ()

如果我只在程序结束时生成PdfMemDocument对象,也会出现问题。

感谢您的帮助

0 个答案:

没有答案