Исключение при вызове функции getSecurityInfo()

Страницы: 1
RSS
Исключение при вызове функции getSecurityInfo()
 
Добрый день.

К сожалению, не нашел, где у вас баг-трекер, поэтому пишу сюда.

Я разрабатываю коннектор для алгоритмической торговли через интерфейс C++ - Lua. В lua скрипте только лишь загружается библиотека, весь остальной функционал реализован на C++.
Выяснилось, что в момент вызова функции getSecurityInfo() в случае, если у терминала нет информации по запрашиваемой бумаге, он возвращает данные по бумаге, по которой у него был в последный раз удачный вызов. Если же до этого не было вызовов данной функции, терминал прекращает работу скрипта с сообщении о необработанном исключении. Могу предположить, что в этот момент в самом терминале происходит чтение неинициализированной памяти или нечто в этом роде.

Пример кода:

Код
boost::shared_ptr<Security>
initFirstLegalSecurity(std::string const& class_code, std::string const& sec_code)
{
  boost::shared_ptr<Security> result;

  lua_getglobal(lua_state_, "getSecurityInfo");
  lua_pushstring(lua_state_, class_code.c_str());
  lua_pushstring(lua_state_, sec_code.c_str());

  int result = lua_pcall(lua_state_, 2, 1, 0);
  if(result == 0)
  {
    result = boost::shared_ptr<Security>(new Security(class_code, sec_code));
    int item_idx = lua_gettop(lua_state_);
    lua_pushnil(lua_state_);
    while(lua_next(lua_state_, item_idx) != 0)
    {
      std::string key = lua_tostring(lua_state_, -2);
      if(key == "scale")
        security->setScale(lua_tonumber(lua_state_, -1));
      else if(key == "lot_size")
        security->setLotSize(lua_tonumber(lua_state_, -1));
      else if(key == "min_price_step")
        security->setMinPriceStep(lua_tonumber(lua_state_, -1));
      lua_pop(lua_state_, 1);
    }
  }
  lua_pop(lua_state_, 1);
  return result;
} 

С уважением,
Андрей.
QuantPro Platform https://quantpro.ru
 
Забыл упомянуть, что исключение возникает при вызове lua_next().
QuantPro Platform https://quantpro.ru
 
Здравствуйте,
Без сторонних библиотек, на чистом LUA, указанная проблема у нас не воспроизводится.
Следует понимать, что хоть LUA и позволяет интегрировать свои библиотеки в терминал, возникновение проблем с ними не является нашей зоной ответственности.
А в данном случае, проблема именно в библиотеке, а не в терминале.
 
Добрый день.
От Вас нужно:
- версия терминала
- дамп падения если он есть
Страницы: 1
Читают тему
Наверх