2017-05-22 10 views
9

私はPythonのバグ:入力プロンプトでのNULLバイトは

input('some\x00 text') 

some代わりのsome textのために要求されますことを発見しました。

ソースから、私はこの関数がNULLバイト後のプロンプトのすべてを無視するC関数PyOS_Readlineを使用していることを理解しました。 PyOS_StdioReadline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt)から

fprintf(stderr, "%s", prompt); 

https://github.com/python/cpython/blob/3.6/Python/bltinmodule.c#L1989 https://github.com/python/cpython/blob/3.6/Parser/myreadline.c#L251

が、これはバグですか、その理由があるのでしょうか?

問題:http://bugs.python.org/issue30431

+0

ほとんどの場合、バグです。 – ivand58

+2

これは 'readline'を呼び出しており、' readline'自体はC NULで終了する文字列データ型を使用しているので、 'readline'を完全に再コーディングする以外にPython *ができることはほとんどありません。 – torek

+0

ありがとう@torek。私は投稿 –

答えて

1

関数のシグネチャはかなりNULを必要とはPyOS_StdioReadline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt)、C-文字列を終了し、そんなにはAPIを変更し、GNU readlineの相互運用性を壊すことなく、これについて行うことができるよりも存在しません。

関連する問題