507 static PyObject* build_params_dict(cfg_t *pymodule)
508 {
509 int k;
510 PyObject *params_dict = PyDict_New();
511
when PyDict_New() succeeds
512 if (pymodule && params_dict) {
513 for (k = 0; k < cfg_size(pymodule, "param"); k++) {
taking True path
514 cfg_t *param;
when considering range: 1 <= value <= 0xffffffff
taking True path
when considering range: 0 <= value <= 1
taking False path
515 char *name, *value;
516 PyObject *pyvalue;
517
518 param = cfg_getnsec(pymodule, "param", k);
519 name = apr_pstrdup(pool, param->title);
520 value = apr_pstrdup(pool, cfg_getstr(param, "value"));
when treating unknown struct cfg_t * from mod_python.c:519 as non-NULL
521 pyvalue = PyString_FromString(value);
522 if (name && pyvalue) {
when treating unknown char * from mod_python.c:521 as non-NULL
when PyString_FromString() succeeds
PyStringObject allocated at: pyvalue = PyString_FromString(value);
ob_refcnt is now refs: 1 + N where N >= 0
523 PyDict_SetItemString(params_dict, name, pyvalue);
when treating unknown char * from mod_python.c:520 as NULL
taking False path
524 Py_DECREF(pyvalue);
525 }
526 }
527 }
528 return params_dict;
529 }
returning
ob_refcnt of '*pyvalue' is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
530