[SCM] Samba Shared Repository - branch master updated

Matthieu Patou mat at samba.org
Thu Sep 22 23:01:07 MDT 2011


On 22/09/2011 21:14, Stefan (metze) Metzmacher wrote:
> Hi Matthieu,
>
>> diff --git a/source4/ntvfs/posix/python/pyxattr_tdb.c b/source4/ntvfs/posix/python/pyxattr_tdb.c
>> index 2b28aca..a08557e 100644
>> --- a/source4/ntvfs/posix/python/pyxattr_tdb.c
>> +++ b/source4/ntvfs/posix/python/pyxattr_tdb.c
>> @@ -60,9 +60,8 @@ static PyObject *py_wrap_setxattr(PyObject *self, PyObject *args)
>>   	status = push_xattr_blob_tdb_raw(eadb, mem_ctx, attribute, filename, -1,
>>   									&blob);
>>   	if (!NT_STATUS_IS_OK(status)) {
>> -		PyErr_FromNTSTATUS(status);
>>   		talloc_free(mem_ctx);
>> -		return NULL;
>> +		PyErr_NTSTATUS_IS_ERR_RAISE(status);
>>   	}
>>   	talloc_free(mem_ctx);
>>   	Py_RETURN_NONE;
>> @@ -91,9 +90,8 @@ static PyObject *py_wrap_getxattr(PyObject *self, PyObject *args)
>>   	status = pull_xattr_blob_tdb_raw(eadb, mem_ctx, attribute, filename,
>>   									 -1, 100,&blob);
>>   	if (!NT_STATUS_IS_OK(status) || blob.length<  0) {
>> -		PyErr_FromNTSTATUS(status);
>>   		talloc_free(mem_ctx);
>> -		return NULL;
>> +		PyErr_NTSTATUS_IS_ERR_RAISE(status);
> Why this changes? What was the problem?
>
> NT_STATUS_IS_ERR() is not the same as !NT_STATUS_IS_OK()
Well the problem is that without this if your status was != OK you'll 
get error like instead of getting the right exception.
"ERROR(<type 'exceptions.SystemError'>): uncaught exception - error 
return without exception set"


As PyErr_FromNTSTATUS(status) is not the same as PyErr_SetNTSTATUS(status)

If _IS_ERR is not the same then we need to have this code:
if (!NT_STATUS_IS_OK(status)) {
         PyErr_SetNTSTATUS(status);
         talloc_free(mem_ctx);
         return NULL;
     }

If you have no objection I'll push a fix like that.

-- 
Matthieu Patou
Samba Team
http://samba.org



More information about the samba-cvs mailing list