Update of /cvsroot/pywin32/pywin32/win32/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12727/win32/src
Modified Files:
win32file.i
Log Message:
Use PyWinLong_FromVoidPtr for backup context pointers
Pass file handles to CopyProgressRoutine as plain int handles to avoid Detach operations
Index: win32file.i
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/src/win32file.i,v
retrieving revision 1.72
retrieving revision 1.73
diff -C2 -d -r1.72 -r1.73
*** win32file.i 8 Feb 2007 07:19:57 -0000 1.72
--- win32file.i 22 Feb 2007 18:51:39 -0000 1.73
***************
*** 3574,3579 ****
if (!PyWinObject_AsHANDLE(obh, &h, FALSE))
return NULL;
! ctxt=PyLong_AsVoidPtr(obctxt);
! if ((ctxt==NULL) && PyErr_Occurred())
return NULL;
if (obbuf==Py_None){
--- 3574,3578 ----
if (!PyWinObject_AsHANDLE(obh, &h, FALSE))
return NULL;
! if (!PyWinLong_AsVoidPtr(obctxt, &ctxt))
return NULL;
if (obbuf==Py_None){
***************
*** 3599,3603 ****
return NULL;
}
! return Py_BuildValue("lNN", bytes_read, obbufout, PyLong_FromVoidPtr(ctxt));
}
--- 3598,3602 ----
return NULL;
}
! return Py_BuildValue("lNN", bytes_read, obbufout, PyWinLong_FromVoidPtr(ctxt));
}
***************
*** 3622,3627 ****
if (!PyWinObject_AsHANDLE(obh, &h, FALSE))
return NULL;
! ctxt=PyLong_AsVoidPtr(obctxt);
! if ((ctxt==NULL) && PyErr_Occurred())
return NULL;
if (!PyWinObject_AsULARGE_INTEGER(obbytes_to_seek, &bytes_to_seek))
--- 3621,3625 ----
if (!PyWinObject_AsHANDLE(obh, &h, FALSE))
return NULL;
! if (!PyWinLong_AsVoidPtr(obctxt, &ctxt))
return NULL;
if (!PyWinObject_AsULARGE_INTEGER(obbytes_to_seek, &bytes_to_seek))
***************
*** 3665,3670 ****
if (!PyWinObject_AsHANDLE(obh, &h, FALSE))
return NULL;
! ctxt=PyLong_AsVoidPtr(obctxt);
! if ((ctxt==NULL) && PyErr_Occurred())
return NULL;
if (PyObject_AsReadBuffer(obbuf, (const void **)&buf, &buflen)==-1)
--- 3663,3667 ----
if (!PyWinObject_AsHANDLE(obh, &h, FALSE))
return NULL;
! if (!PyWinLong_AsVoidPtr(obctxt, &ctxt))
return NULL;
if (PyObject_AsReadBuffer(obbuf, (const void **)&buf, &buflen)==-1)
***************
*** 3677,3681 ****
return NULL;
}
! return Py_BuildValue("lN", bytes_written, PyLong_FromVoidPtr(ctxt));
}
--- 3674,3678 ----
return NULL;
}
! return Py_BuildValue("lN", bytes_written, PyWinLong_FromVoidPtr(ctxt));
}
***************
*** 3728,3743 ****
LPVOID lpData)
{
! PyObject *args=NULL, *hsrc=NULL, *hdst=NULL, *ret=NULL;
DWORD retcode;
CEnterLeavePython _celp;
PyObject **callback_objects=(PyObject **)lpData;
- hsrc=PyWinObject_FromHANDLE(hSourceFile);
- hdst=PyWinObject_FromHANDLE(hDestinationFile);
// Py_BuildValue should catch PyHANDLEs NULL
! args=Py_BuildValue("LLLLkkOOO",
TotalFileSize, TotalBytesTransferred,
StreamSize, StreamBytesTransferred,
dwStreamNumber, dwCallbackReason,
! hsrc, hdst, callback_objects[1]);
if (args==NULL) // Some serious error, cancel operation.
retcode=PROGRESS_CANCEL;
--- 3725,3740 ----
LPVOID lpData)
{
! PyObject *args=NULL, *ret=NULL;
DWORD retcode;
CEnterLeavePython _celp;
PyObject **callback_objects=(PyObject **)lpData;
// Py_BuildValue should catch PyHANDLEs NULL
! args=Py_BuildValue("LLLLkkNNO",
TotalFileSize, TotalBytesTransferred,
StreamSize, StreamBytesTransferred,
dwStreamNumber, dwCallbackReason,
! PyWinLong_FromHANDLE(hSourceFile),
! PyWinLong_FromHANDLE(hDestinationFile),
! callback_objects[1]);
if (args==NULL) // Some serious error, cancel operation.
retcode=PROGRESS_CANCEL;
***************
*** 3748,3752 ****
else{
retcode=PyInt_AsLong(ret);
! if (PyErr_Occurred())
retcode=PROGRESS_CANCEL;
}
--- 3745,3749 ----
else{
retcode=PyInt_AsLong(ret);
! if ((retcode==(DWORD)-1) && PyErr_Occurred())
retcode=PROGRESS_CANCEL;
}
***************
*** 3755,3769 ****
Py_XDECREF(args);
Py_XDECREF(ret);
- // Detach PyHANDLEs so they don't prematurely close file handles when destroyed
- if (hsrc!=NULL){
- ret=PyObject_CallMethod(hsrc,"Detach",NULL);
- Py_DECREF(hsrc);
- Py_XDECREF(ret);
- }
- if (hdst!=NULL){
- ret=PyObject_CallMethod(hdst,"Detach",NULL);
- Py_DECREF(hdst);
- Py_XDECREF(ret);
- }
return retcode;
}
--- 3752,3755 ----
|