Skip to content

Commit 405d5cc

Browse files
committed
Rename and review py_str_to_git_oid*
1 parent d44f7aa commit 405d5cc

File tree

7 files changed

+84
-88
lines changed

7 files changed

+84
-88
lines changed

src/index.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,10 +352,10 @@ Index_read_tree(Index *self, PyObject *value)
352352
git_oid oid;
353353
git_tree *tree;
354354
int err;
355-
Py_ssize_t len;
355+
size_t len;
356356

357-
len = py_str_to_git_oid(value, &oid);
358-
if (len < 0)
357+
len = py_oid_to_git_oid(value, &oid);
358+
if (len == 0)
359359
return NULL;
360360

361361
err = git_tree_lookup_prefix(&tree, self->repo->repo, &oid, len);

src/oid.c

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ git_oid_to_python(const git_oid *oid)
4545
return (PyObject*)py_oid;
4646
}
4747

48-
Py_ssize_t
49-
_oid_from_hex(PyObject *py_oid, git_oid *oid)
48+
size_t
49+
py_hex_to_git_oid (PyObject *py_oid, git_oid *oid)
5050
{
5151
PyObject *py_hex;
5252
int err;
@@ -58,47 +58,47 @@ _oid_from_hex(PyObject *py_oid, git_oid *oid)
5858
if (PyBytes_Check(py_oid)) {
5959
err = PyBytes_AsStringAndSize(py_oid, &hex, &len);
6060
if (err)
61-
return -1;
61+
return 0;
6262

6363
err = git_oid_fromstrn(oid, hex, len);
6464
if (err < 0) {
6565
PyErr_SetObject(Error_type(err), py_oid);
66-
return -1;
66+
return 0;
6767
}
6868

69-
return len;
69+
return (size_t)len;
7070
}
7171
#endif
7272

7373
/* Unicode */
7474
if (PyUnicode_Check(py_oid)) {
7575
py_hex = PyUnicode_AsASCIIString(py_oid);
7676
if (py_hex == NULL)
77-
return -1;
77+
return 0;
7878

7979
err = PyBytes_AsStringAndSize(py_hex, &hex, &len);
8080
if (err) {
8181
Py_DECREF(py_hex);
82-
return -1;
82+
return 0;
8383
}
8484

8585
err = git_oid_fromstrn(oid, hex, len);
8686
Py_DECREF(py_hex);
8787
if (err < 0) {
8888
PyErr_SetObject(Error_type(err), py_oid);
89-
return -1;
89+
return 0;
9090
}
9191

92-
return len;
92+
return (size_t)len;
9393
}
9494

9595
/* Type error */
9696
PyErr_SetObject(PyExc_TypeError, py_oid);
97-
return -1;
97+
return 0;
9898
}
9999

100-
Py_ssize_t
101-
py_str_to_git_oid(PyObject *py_oid, git_oid *oid)
100+
size_t
101+
py_oid_to_git_oid(PyObject *py_oid, git_oid *oid)
102102
{
103103
/* Oid */
104104
if (PyObject_TypeCheck(py_oid, (PyTypeObject*)&OidType)) {
@@ -107,41 +107,43 @@ py_str_to_git_oid(PyObject *py_oid, git_oid *oid)
107107
}
108108

109109
/* Hex */
110-
return _oid_from_hex(py_oid, oid);
110+
return py_hex_to_git_oid(py_oid, oid);
111111
}
112112

113-
Py_ssize_t
114-
py_str_to_git_oid_expand(git_repository *repo, PyObject *py_str, git_oid *oid)
113+
int
114+
py_oid_to_git_oid_expand(git_repository *repo, PyObject *py_str, git_oid *oid)
115115
{
116116
int err;
117-
Py_ssize_t len;
118-
git_odb *odb;
119-
git_odb_object *obj;
117+
size_t len;
118+
git_odb *odb = NULL;
119+
git_odb_object *obj = NULL;
120120

121-
len = py_str_to_git_oid(py_str, oid);
121+
len = py_oid_to_git_oid(py_str, oid);
122+
if (len == 0)
123+
return -1;
122124

123-
if (len == GIT_OID_HEXSZ || len < 0)
124-
return len;
125+
if (len == GIT_OID_HEXSZ)
126+
return 0;
125127

128+
/* Short oid */
126129
err = git_repository_odb(&odb, repo);
127-
if (err < 0) {
128-
Error_set(err);
129-
return -1;
130-
}
130+
if (err < 0)
131+
goto error;
131132

132133
err = git_odb_read_prefix(&obj, odb, oid, len);
133-
if (err < 0) {
134-
git_odb_free(odb);
135-
Error_set(err);
136-
return err;
137-
}
134+
if (err < 0)
135+
goto error;
138136

139137
git_oid_cpy(oid, git_odb_object_id(obj));
140-
141138
git_odb_object_free(obj);
142139
git_odb_free(odb);
143-
144140
return 0;
141+
142+
error:
143+
git_odb_object_free(obj);
144+
git_odb_free(odb);
145+
Error_set(err);
146+
return -1;
145147
}
146148

147149
PyObject *
@@ -197,8 +199,8 @@ Oid_init(Oid *self, PyObject *args, PyObject *kw)
197199
}
198200

199201
/* Case 2: hex */
200-
len = _oid_from_hex(hex, &self->oid);
201-
if (len < 0)
202+
len = py_hex_to_git_oid(hex, &self->oid);
203+
if (len == 0)
202204
return -1;
203205

204206
return 0;

src/oid.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
#include <Python.h>
3333
#include <git2.h>
3434

35-
Py_ssize_t py_str_to_git_oid(PyObject *py_str, git_oid *oid);
36-
Py_ssize_t py_str_to_git_oid_expand(git_repository *repo, PyObject *py_str,
37-
git_oid *oid);
35+
size_t py_oid_to_git_oid(PyObject *py_str, git_oid *oid);
36+
int py_oid_to_git_oid_expand(git_repository *repo, PyObject *py_str,
37+
git_oid *oid);
3838
PyObject* git_oid_to_python(const git_oid *oid);
3939
PyObject* git_oid_to_py_str(const git_oid *oid);
4040

src/reference.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@ Reference_target__set__(Reference *self, PyObject *py_target)
226226
git_oid oid;
227227
char *c_name;
228228
int err;
229-
Py_ssize_t len;
230229
git_reference *new_ref;
231230
git_repository *repo;
232231

@@ -235,11 +234,9 @@ Reference_target__set__(Reference *self, PyObject *py_target)
235234
/* Case 1: Direct */
236235
if (GIT_REF_OID == git_reference_type(self->reference)) {
237236
repo = git_reference_owner(self->reference);
238-
len = py_str_to_git_oid_expand(repo, py_target, &oid);
239-
if (len < 0) {
240-
err = (int)len;
241-
goto error;
242-
}
237+
err = py_oid_to_git_oid_expand(repo, py_target, &oid);
238+
if (err < 0)
239+
return err;
243240

244241
err = git_reference_set_target(&new_ref, self->reference, &oid);
245242
if (err < 0)

src/repository.c

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -254,12 +254,12 @@ PyObject *
254254
Repository_git_object_lookup_prefix(Repository *self, PyObject *key)
255255
{
256256
int err;
257-
Py_ssize_t len;
257+
size_t len;
258258
git_oid oid;
259259
git_object *obj;
260260

261-
len = py_str_to_git_oid(key, &oid);
262-
if (len < 0)
261+
len = py_oid_to_git_oid(key, &oid);
262+
if (len == 0)
263263
return NULL;
264264

265265
err = git_object_lookup_prefix(&obj, self->repo, &oid, len, GIT_OBJ_ANY);
@@ -339,11 +339,11 @@ Repository_read(Repository *self, PyObject *py_hex)
339339
{
340340
git_oid oid;
341341
git_odb_object *obj;
342-
Py_ssize_t len;
342+
size_t len;
343343
PyObject* tuple;
344344

345-
len = py_str_to_git_oid(py_hex, &oid);
346-
if (len < 0)
345+
len = py_oid_to_git_oid(py_hex, &oid);
346+
if (len == 0)
347347
return NULL;
348348

349349
obj = Repository_read_raw(self->repo, &oid, len);
@@ -522,11 +522,11 @@ Repository_merge_base(Repository *self, PyObject *args)
522522
if (!PyArg_ParseTuple(args, "OO", &value1, &value2))
523523
return NULL;
524524

525-
err = py_str_to_git_oid_expand(self->repo, value1, &oid1);
525+
err = py_oid_to_git_oid_expand(self->repo, value1, &oid1);
526526
if (err < 0)
527527
return NULL;
528528

529-
err = py_str_to_git_oid_expand(self->repo, value2, &oid2);
529+
err = py_oid_to_git_oid_expand(self->repo, value2, &oid2);
530530
if (err < 0)
531531
return NULL;
532532

@@ -548,7 +548,6 @@ Repository_walk(Repository *self, PyObject *args)
548548
PyObject *value;
549549
unsigned int sort;
550550
int err;
551-
Py_ssize_t len;
552551
git_oid oid;
553552
git_revwalk *walk;
554553
Walker *py_walker;
@@ -565,10 +564,10 @@ Repository_walk(Repository *self, PyObject *args)
565564

566565
/* Push */
567566
if (value != Py_None) {
568-
len = py_str_to_git_oid_expand(self->repo, value, &oid);
569-
if (len < 0) {
567+
err = py_oid_to_git_oid_expand(self->repo, value, &oid);
568+
if (err < 0) {
570569
git_revwalk_free(walk);
571-
return Error_set((int)len);
570+
return NULL;
572571
}
573572

574573
err = git_revwalk_push(walk, &oid);
@@ -683,7 +682,7 @@ Repository_create_commit(Repository *self, PyObject *args)
683682
int parent_count;
684683
git_commit **parents = NULL;
685684
int err = 0, i = 0;
686-
Py_ssize_t len;
685+
size_t len;
687686

688687
if (!PyArg_ParseTuple(args, "zO!O!OOO!|s",
689688
&update_ref,
@@ -695,8 +694,8 @@ Repository_create_commit(Repository *self, PyObject *args)
695694
&encoding))
696695
return NULL;
697696

698-
len = py_str_to_git_oid(py_oid, &oid);
699-
if (len < 0)
697+
len = py_oid_to_git_oid(py_oid, &oid);
698+
if (len == 0)
700699
goto out;
701700

702701
message = py_str_to_c_str(py_message, encoding);
@@ -717,12 +716,14 @@ Repository_create_commit(Repository *self, PyObject *args)
717716
}
718717
for (; i < parent_count; i++) {
719718
py_parent = PyList_GET_ITEM(py_parents, i);
720-
len = py_str_to_git_oid(py_parent, &oid);
721-
if (len < 0)
719+
len = py_oid_to_git_oid(py_parent, &oid);
720+
if (len == 0)
722721
goto out;
723-
if (git_commit_lookup_prefix(&parents[i], self->repo, &oid,
724-
(unsigned int)len))
722+
err = git_commit_lookup_prefix(&parents[i], self->repo, &oid, len);
723+
if (err < 0) {
724+
Error_set(err);
725725
goto out;
726+
}
726727
}
727728

728729
err = git_commit_create(&oid, self->repo, update_ref,
@@ -762,7 +763,7 @@ Repository_create_tag(Repository *self, PyObject *args)
762763
git_oid oid;
763764
git_object *target = NULL;
764765
int err, target_type;
765-
Py_ssize_t len;
766+
size_t len;
766767

767768
if (!PyArg_ParseTuple(args, "sOiO!s",
768769
&tag_name,
@@ -772,12 +773,12 @@ Repository_create_tag(Repository *self, PyObject *args)
772773
&message))
773774
return NULL;
774775

775-
len = py_str_to_git_oid(py_oid, &oid);
776-
if (len < 0)
776+
len = py_oid_to_git_oid(py_oid, &oid);
777+
if (len == 0)
777778
return NULL;
778779

779-
err = git_object_lookup_prefix(&target, self->repo, &oid,
780-
(unsigned int)len, target_type);
780+
err = git_object_lookup_prefix(&target, self->repo, &oid, len,
781+
target_type);
781782
err = err < 0 ? err : git_tag_create(&oid, self->repo, tag_name, target,
782783
py_tagger->signature, message, 0);
783784
git_object_free(target);
@@ -885,14 +886,13 @@ Repository_create_reference_direct(Repository *self, PyObject *args,
885886
char *c_name;
886887
git_oid oid;
887888
int err, force;
888-
Py_ssize_t len;
889889

890890
if (!PyArg_ParseTuple(args, "sOi", &c_name, &py_obj, &force))
891891
return NULL;
892892

893-
len = py_str_to_git_oid_expand(self->repo, py_obj, &oid);
894-
if (len < 0)
895-
return Error_set((int)len);
893+
err = py_oid_to_git_oid_expand(self->repo, py_obj, &oid);
894+
if (err < 0)
895+
return NULL;
896896

897897
err = git_reference_create(&c_reference, self->repo, c_name, &oid, force);
898898
if (err < 0)
@@ -1013,7 +1013,6 @@ Repository_TreeBuilder(Repository *self, PyObject *args)
10131013
git_tree *tree = NULL;
10141014
git_tree *must_free = NULL;
10151015
int err;
1016-
Py_ssize_t len;
10171016

10181017
if (!PyArg_ParseTuple(args, "|O", &py_src))
10191018
return NULL;
@@ -1027,8 +1026,8 @@ Repository_TreeBuilder(Repository *self, PyObject *args)
10271026
}
10281027
tree = py_tree->tree;
10291028
} else {
1030-
len = py_str_to_git_oid_expand(self->repo, py_src, &oid);
1031-
if (len < 0)
1029+
err = py_oid_to_git_oid_expand(self->repo, py_src, &oid);
1030+
if (err < 0)
10321031
return NULL;
10331032

10341033
err = git_tree_lookup(&tree, self->repo, &oid);

src/treebuilder.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,16 @@ PyObject *
5353
TreeBuilder_insert(TreeBuilder *self, PyObject *args)
5454
{
5555
PyObject *py_oid;
56-
Py_ssize_t len;
56+
size_t len;
5757
int err, attr;
5858
git_oid oid;
5959
const char *fname;
6060

6161
if (!PyArg_ParseTuple(args, "sOi", &fname, &py_oid, &attr))
6262
return NULL;
6363

64-
len = py_str_to_git_oid(py_oid, &oid);
65-
if (len < 0)
64+
len = py_oid_to_git_oid(py_oid, &oid);
65+
if (len == 0)
6666
return NULL;
6767

6868
err = git_treebuilder_insert(NULL, self->bld, fname, &oid, attr);

0 commit comments

Comments
 (0)