> Can you, please, describe how exactly can > qemuMonitorGetCPUModelExpansion return zero without assigning to > model_info? > > Looking at the code the only way the function could return zero is when > qemuMonitorJSONParseCPUModel returns zero. And that only happens in one > place: > > *model_info = g_steal_pointer(&machine_model); > return 0;
As I understand: qemuMonitorGetCPUModelExpansion() returns qemuMonitorJSONGetCPUModelExpansion() result. In qemuMonitorJSONGetCPUModelExpansion(): ``` if ((rc = qemuMonitorJSONQueryCPUModelExpansionOne(mon, type, &model, &data)) <= 0) return rc; ``` qemuMonitorJSONQueryCPUModelExpansionOne() returns zero if the condition is true: ``` if (qemuMonitorJSONHasError(reply, "GenericError")) return 0; ``` So the qemuMonitorJSONParseCPUModelExpansion with `*model_info = g_steal_pointer` won't even be called because of early return.
