670 static PyObject *
671 pyremovexattr(PyObject *self, PyObject *args)
672 {
673 PyObject *myarg, *res;
674 int nofollow = 0;
675 char *attrname = NULL;
676 int nret;
677 target_t tgt;
678
679 /* Parse the arguments */
680 if (!PyArg_ParseTuple(args, "Oet|i", &myarg, NULL, &attrname, &nofollow))
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
681 return NULL;
682
683 if(!convertObj(myarg, &tgt, nofollow)) {
when considering value == (int)0 from xattr.c:683
taking True path
684 res = NULL;
685 goto freearg;
686 }
687
688 /* Remove the attribute */
689 nret = _remove_obj(&tgt, attrname);
690
691 free_tgt(&tgt);
692
693 if(nret == -1) {
694 res = PyErr_SetFromErrno(PyExc_IOError);
695 goto freearg;
696 }
697
698 Py_INCREF(Py_None);
699 res = Py_None;
700
701 freearg:
702 PyMem_Free(attrname);
703
704 /* Return the result */
705 return res;
706 }
returning (PyObject*)NULL without setting an exception