<div dir="auto"><div dir="ltr">Hi all,<div><br></div><div>I noticed some behavior on the <b>tpms</b> command I'd copied from the Kia/Kona code, which sent me down a small rabbit hole.</div><div>What I was seeing was that the temperature was repeated instead of seeing the pressure and temperature.</div><div><br></div><div>Even in vehicle.cpp, we can see code like this:</div><div dir="auto"><br></div><div>  <font face="monospace">const char* range_est = StdMetrics.ms_v_bat_range_est->AsUnitString("-", rangeUnit, 0).c_str();<br>  if (*range_est != '-')<br>    writer->printf("Est. range: %s\n", range_est);</font></div><div dir="auto"><font face="monospace"><br></font></div><div>My C++ is a bit rusty, however I believe that the 'const char*' won't hold the temporary std::string object returned by 'AsUnitString'.  To do that, I believe we need to assign to a reference (which I know will work).  The problem is that the original code will mostly work (especially in cases like the above), as the deallocated heap memory won't have been reallocated.</div><div><br><font face="monospace">  const std::string& range_est = StdMetrics.ms_v_bat_range_est->AsUnitString("-", rangeUnit, 0);<br>  if (!is_empty_metric(range_est))<br>    writer->printf("Est. range: %s\n", range_est.c_str());<br></font></div><div><br></div><div>Where I've defined in vehicle.h the following:</div><div><font face="monospace">inline bool is_empty_metric(const std::string &measure)<br>{<br>  return (measure == "") || (measure[0] == '-');<br>}<br></font><br></div><div>Will the above work functionally?  Would it be better to be:  </div><div dir="auto"><br></div><div dir="auto">return (measure =="") || (measure == "-") </div><div dir="auto"><br></div><div>This occurs in 8 files (outside my new Ioniq 5 files) that I have noted. </div><div dir="auto"><br></div><div>I would make a separate commit for this and do a pull request for it, </div><div><br></div><div>//.ichael</div><div><br></div></div></div>