2026-05-04 10:51 ftp://ftp.de.debian.org/debian/pool/main/p/pyao/pyao_0.82+ds1.orig.tar.gz cppcheck-options: --library=posix --library=gnu --library=bsd --library=python --inconclusive --enable=style,information --inline-suppr --template=daca2 --disable=missingInclude --suppress=unmatchedSuppression --check-library --debug-warnings --suppress=autoNoType --suppress=valueFlowBailout --suppress=bailoutUninitVar --suppress=symbolDatabaseWarning --suppress=normalCheckLevelConditionExpressions -D__GNUC__ --platform=unix64 -j1 platform: Linux-6.8.0-111-generic-x86_64-with-glibc2.39 python: 3.12.3 client-version: 1.3.70 compiler: g++ (Ubuntu 14.2.0-4ubuntu2~24.04.1) 14.2.0 cppcheck: head 2.20.0 head-info: e5c4a73 (2026-05-01 11:10:43 +0200) count: 31 14 elapsed-time: 0.2 0.1 head-timing-info: old-timing-info: head results: pyao-0.82+ds1/src/aomodule.c:35:21: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PyExc_OverflowError [valueFlowBailoutIncompleteVar] pyao-0.82+ds1/src/aomodule.c:51:21: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PyExc_TypeError [valueFlowBailoutIncompleteVar] pyao-0.82+ds1/src/aomodule.c:127:37: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PyDict_Type [valueFlowBailoutIncompleteVar] pyao-0.82+ds1/src/aomodule.c:354:7: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable Py_None [valueFlowBailoutIncompleteVar] pyao-0.82+ds1/src/aomodule.c:390:3: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable Py_None [valueFlowBailoutIncompleteVar] pyao-0.82+ds1/src/aomodule.c:399:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable Py_True [valueFlowBailoutIncompleteVar] pyao-0.82+ds1/src/aomodule.c:452:3: warning: Return value of function PyModule_AddObject() is not used. [ignoredReturnValue] pyao-0.82+ds1/src/aomodule.c:455:3: warning: Return value of function PyModule_AddObject() is not used. [ignoredReturnValue] pyao-0.82+ds1/src/aomodule.c:29:13: style: Condition 'value!=-1' is always true [knownConditionTrueFalse] pyao-0.82+ds1/src/aomodule.c:381:5: error: Memory leak: output_samples [memleak] pyao-0.82+ds1/src/aomodule.c:384:13: warning: If memory allocation fails, then there is a possible null pointer dereference: output_samples [nullPointerOutOfMemory] pyao-0.82+ds1/src/aomodule.c:379:20: note: Assuming allocation function fails pyao-0.82+ds1/src/aomodule.c:379:20: note: Assignment 'output_samples=(char*)PyMem_Malloc((num_bytes)*sizeof(char))', assigned value is 0 pyao-0.82+ds1/src/aomodule.c:380:7: note: Assuming condition is false pyao-0.82+ds1/src/aomodule.c:384:13: note: Null pointer dereference pyao-0.82+ds1/src/aomodule.c:42:27: style:inconclusive: Function 'dict_to_options' argument 1 names different: declaration '' definition 'dict'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:155:25: style:inconclusive: Function 'py_ao_new' argument 1 names different: declaration '' definition 'type'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:155:41: style:inconclusive: Function 'py_ao_new' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:155:57: style:inconclusive: Function 'py_ao_new' argument 3 names different: declaration '' definition 'kwargs'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:200:26: style:inconclusive: Function 'py_ao_dealloc' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:207:27: style:inconclusive: Function 'py_ao_driver_id' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:207:43: style:inconclusive: Function 'py_ao_driver_id' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:258:29: style:inconclusive: Function 'py_ao_driver_info' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:258:45: style:inconclusive: Function 'py_ao_driver_info' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:317:32: style:inconclusive: Function 'py_ao_file_extension' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:317:48: style:inconclusive: Function 'py_ao_file_extension' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:362:23: style:inconclusive: Function 'py_ao_play' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:362:39: style:inconclusive: Function 'py_ao_play' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:394:31: style:inconclusive: Function 'py_ao_is_big_endian' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:394:47: style:inconclusive: Function 'py_ao_is_big_endian' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:404:35: style:inconclusive: Function 'py_ao_default_driver_id' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:404:51: style:inconclusive: Function 'py_ao_default_driver_id' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] pyao-0.82+ds1/src/aomodule.c:226:22: style: Parameter 'info' can be declared as pointer to const [constParameterPointer] pyao-0.82+ds1/src/aomodule.c:227:16: style: Variable 'keys' can be declared as const array [constVariable] pyao-0.82+ds1/src/aomodule.c:394:47: style: Parameter 'args' can be declared as pointer to const. However it seems that 'py_ao_is_big_endian' is a callback function, if 'args' is declared with const you might also need to cast function pointer(s). [constParameterCallback] pyao-0.82+ds1/src/aomodule.h:181:21: note: You might need to cast the function pointer here pyao-0.82+ds1/src/aomodule.c:394:47: note: Parameter 'args' can be declared as pointer to const diff: head pyao-0.82+ds1/src/aomodule.c:155:25: style:inconclusive: Function 'py_ao_new' argument 1 names different: declaration '' definition 'type'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:155:41: style:inconclusive: Function 'py_ao_new' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:155:57: style:inconclusive: Function 'py_ao_new' argument 3 names different: declaration '' definition 'kwargs'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:200:26: style:inconclusive: Function 'py_ao_dealloc' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:207:27: style:inconclusive: Function 'py_ao_driver_id' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:207:43: style:inconclusive: Function 'py_ao_driver_id' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:258:29: style:inconclusive: Function 'py_ao_driver_info' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:258:45: style:inconclusive: Function 'py_ao_driver_info' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:317:32: style:inconclusive: Function 'py_ao_file_extension' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:317:48: style:inconclusive: Function 'py_ao_file_extension' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:362:23: style:inconclusive: Function 'py_ao_play' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:362:39: style:inconclusive: Function 'py_ao_play' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:394:31: style:inconclusive: Function 'py_ao_is_big_endian' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:394:47: style:inconclusive: Function 'py_ao_is_big_endian' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:404:35: style:inconclusive: Function 'py_ao_default_driver_id' argument 1 names different: declaration '' definition 'self'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:404:51: style:inconclusive: Function 'py_ao_default_driver_id' argument 2 names different: declaration '' definition 'args'. [funcArgNamesDifferentUnnamed] head pyao-0.82+ds1/src/aomodule.c:42:27: style:inconclusive: Function 'dict_to_options' argument 1 names different: declaration '' definition 'dict'. [funcArgNamesDifferentUnnamed] DONE