                  const char* fmt, ...) {
    char* msg_buf = nullptr;
    va_list args;
    va_start(args, fmt);
    vasprintf(&msg_buf, fmt, args);
    va_end(args);
  
    if (!msg_buf) return;
  
    json11::Json log_j = json11::Json::object {
 
</s> remove   if (!msg_buf) return;
 </s> add   if (ret <= 0 || !msg_buf) return;

  std::lock_guard lk(s.lock);
  cloudlog_init(); </s> remove void log(int levelnum, const char* filename, int lineno, const char* func, const char* msg, const std::string& log_s) {
  std::lock_guard lk(s.lock);
  cloudlog_init();
 </s> add static void log(int levelnum, const char* filename, int lineno, const char* func, const char* msg, const std::string& log_s) {
  int ret = vasprintf(&msg_buf, fmt, args);
                  const char* fmt, ...) {
    char* msg_buf = nullptr;
    va_list args;
    va_start(args, fmt);
  int ret = vasprintf(&msg_buf, fmt, args);
    va_end(args);
  
    if (!msg_buf) return;
  
    json11::Json log_j = json11::Json::object {
keep keep keep keep replace keep keep keep keep keep
 swaglog.cc: add test case. fixed the ctx of the first message is empty (#23226)

* test case

* add to selfdrive_tests.yaml

* fix ctx_j is empty

* check return value too 
selfdrive/common/swaglog.cc