Upskirt的Python扩展:字符串末尾的垃圾

2024-04-25 07:15:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试为Upskirt创建一个Python扩展。我认为对于第一个C项目来说,这并不难,因为有一些示例(upkirt代码和Ruby扩展中的示例程序)。在

扩展有效,它转换我抛出的Markdown,但有时输出在字符串的末尾有一些垃圾。我不知道是什么原因造成的。在

以下是一些输出:

python test.py 
<module 'pantyshot' from '/home/frank/Code/pantyshot/virtenv/lib/python2.7/site-packages/pantyshot.so'>
<built-in function render>

'<p>This <strong>is</strong> <em>a</em> <code>test</code>. <a href="http://example.com">Test</a>.</p>\n\x7f'
<p>This <strong>is</strong> <em>a</em> <code>test</code>. <a href="http://example.com">Test</a>.</p>

--------------------------------------------------------------------------------

'<p>This <strong>is</strong> <em>a</em> <code>test</code>. <a href="http://example.com">Test</a>.</p>\n\x7f'
<p>This <strong>is</strong> <em>a</em> <code>test</code>. <a href="http://example.com">Test</a>.</p>

--------------------------------------------------------------------------------

我的代码可以在my Github repo中找到。我把它叫做pantyshot,因为当我听到upskirt的时候我就想到了这个。奇怪的名字,我知道。在

我希望有人能帮助我。在


Tags: 代码testcomhttp示例isexamplecode
1条回答
网友
1楼 · 发布于 2024-04-25 07:15:27

您正在执行^{} in ^{}

output_text = strdup(ob->data); /* ob is a "struct buf *" */

但我不认为ob->data是以nul结尾的C字符串。您可以在^{}中找到:

^{pr2}$

所以,你很可能会跑出缓冲区的末端,在造成任何伤害之前点击一个'\0'而走运。我认为您应该在将ob->data复制为C字符串之前调用bufnullterm(ob);或者您可以查看^{},使用malloc和{}来复制它,并手动处理nul终止符(但请确保为复制的字符串分配了ob->size + 1字节)。在

如果你想去掉换行符(即尾随的\n),那么你可能需要在某个地方手工进行一些空白剥离。在

相关问题 更多 >