if (!string_pmemdup(pool, k, &kbuffer, &ksize)) {
return NULL;
}
- val_string = svn_string_ncreate(PyString_AsString(v),
- PyString_Size(v), pool);
+ val_string = py_to_svn_string(v, pool);
+ if (val_string == NULL) {
+ return NULL;
+ }
apr_hash_set(hash_props, kbuffer, ksize, val_string);
}
return true;
}
+svn_string_t *py_to_svn_string(PyObject *obj, apr_pool_t *pool)
+{
+ char *buffer = PyString_AsString(obj);
+ if (buffer == NULL) {
+ return NULL;
+ }
+ return svn_string_ncreate(buffer, PyString_GET_SIZE(obj), pool);
+}
+
PyObject *pyify_changed_paths(apr_hash_t *changed_paths, bool node_kind, apr_pool_t *pool)
{
PyObject *py_changed_paths, *pyval;
char *string_pstrdup(apr_pool_t *pool, PyObject *str);
bool string_pmemdup(apr_pool_t *pool, PyObject *str,
char **buffer, apr_ssize_t *size);
+svn_string_t *py_to_svn_string(PyObject *obj, apr_pool_t *pool);
svn_error_t *py_svn_log_wrapper(void *baton, apr_hash_t *changed_paths,
long revision, const char *author,
if (val == Py_None) {
prop->value = NULL;
} else {
- prop->value = svn_string_ncreate(PyString_AsString(val), PyString_Size(val), pool);
+ prop->value = py_to_svn_string(val, pool);
+ if (prop->value == NULL) {
+ return false;
+ }
}
APR_ARRAY_PUSH(*ret, svn_prop_t *) = prop;
}