@@ -48,14 +48,21 @@ PyDoc_STRVAR(FilterSource_repo__doc__,
48
48
PyObject *
49
49
FilterSource_repo__get__ (FilterSource * self )
50
50
{
51
- Repository * repo = PyObject_New (Repository , & RepositoryType );
51
+ git_repository * repo = git_filter_source_repo (self -> src );
52
+ Repository * py_repo ;
53
+
52
54
if (repo == NULL )
55
+ Py_RETURN_NONE ;
56
+
57
+ py_repo = PyObject_New (Repository , & RepositoryType );
58
+ if (py_repo == NULL )
53
59
return NULL ;
54
- repo -> repo = git_filter_source_repo (self -> src );
55
- repo -> config = NULL ;
56
- repo -> index = NULL ;
57
- repo -> owned = 1 ;
58
- return (PyObject * )repo ;
60
+ py_repo -> repo = repo ;
61
+ py_repo -> config = NULL ;
62
+ py_repo -> index = NULL ;
63
+ py_repo -> owned = 0 ;
64
+ Py_INCREF (py_repo );
65
+ return (PyObject * )py_repo ;
59
66
}
60
67
61
68
PyDoc_STRVAR (FilterSource_path__doc__ ,
@@ -88,6 +95,15 @@ FilterSource_oid__get__(FilterSource *self)
88
95
return git_oid_to_python (oid );
89
96
}
90
97
98
+ PyDoc_STRVAR (FilterSource_mode__doc__ ,
99
+ "Filter mode (either GIT_FILTER_CLEAN or GIT_FILTER_SMUDGE).\n" );
100
+
101
+ PyObject *
102
+ FilterSource_mode__get__ (FilterSource * self )
103
+ {
104
+ return PyLong_FromUnsignedLong (git_filter_source_mode (self -> src ));
105
+ }
106
+
91
107
PyDoc_STRVAR (FilterSource_flags__doc__ ,
92
108
"GIT_FILTER_* flags to be applied to the data.\n" );
93
109
@@ -102,6 +118,7 @@ PyGetSetDef FilterSource_getseters[] = {
102
118
GETTER (FilterSource , path ),
103
119
GETTER (FilterSource , filemode ),
104
120
GETTER (FilterSource , oid ),
121
+ GETTER (FilterSource , mode ),
105
122
GETTER (FilterSource , flags ),
106
123
{NULL }
107
124
};
@@ -431,7 +448,16 @@ int pygit2_filter_check(
431
448
}
432
449
for (i = 0 ; i < nattrs ; ++ i )
433
450
{
434
- if (PyList_Append (py_attrs , to_unicode_safe (attr_values [i ], NULL )) < 0 )
451
+ if (attr_values [i ] == NULL )
452
+ {
453
+ if (PyList_SetItem (py_attrs , i , Py_None ) < 0 )
454
+ {
455
+ PyErr_Clear ();
456
+ err = GIT_ERROR ;
457
+ goto error ;
458
+ }
459
+ }
460
+ else if (PyList_SetItem (py_attrs , i , to_unicode_safe (attr_values [i ], NULL )) < 0 )
435
461
{
436
462
PyErr_Clear ();
437
463
err = GIT_ERROR ;
0 commit comments