Fix writing to file-like obj in python3.3

This commit is contained in:
Siu Kwan Lam 2013-02-24 13:21:42 -06:00
commit d270f47328
2 changed files with 8 additions and 5 deletions

View file

@ -9,7 +9,7 @@ int py_bytes_to(PyObject *bytesobj, llvm::StringRef &strref){
// type check
if (!PyBytes_Check(bytesobj)) {
// raises TypeError
PyErr_SetString(PyExc_TypeError, "Expecting a str");
PyErr_SetString(PyExc_TypeError, "Expecting a bytes");
return 0;
}
// get len and buffer

View file

@ -477,9 +477,13 @@ PyObject* llvm_ParseBitCodeFile(llvm::StringRef Buf, llvm::LLVMContext& Ctx,
if (FObj) {
std::string ErrStr;
M = ParseBitcodeFile(MB, Ctx, &ErrStr);
if (-1 == PyFile_WriteString(ErrStr.c_str(), FObj)) {
auto_pyobject buf = PyBytes_FromString(ErrStr.c_str());
if (NULL == PyObject_CallMethod(FObj, "write", "O", *buf)){
return NULL;
}
// if (-1 == PyFile_WriteString(ErrStr.c_str(), FObj)) {
// return NULL;
// }
} else {
M = ParseBitcodeFile(MB, Ctx);
}
@ -497,9 +501,8 @@ PyObject* llvm_WriteBitcodeToFile(const llvm::Module *M, PyObject* FObj)
llvm::WriteBitcodeToFile(M, rso);
rso.flush();
StringRef ref = rso.str();
PyObject* buf = PyBytes_FromStringAndSize(ref.data(), ref.size());
puts(PyString_AsString(PyObject_Str(PyObject_Type(buf))));
return PyObject_CallMethod(FObj, "write", "O", buf);
auto_pyobject buf = PyBytes_FromStringAndSize(ref.data(), ref.size());
return PyObject_CallMethod(FObj, "write", "O", *buf);
}
static