Code cleanup

From FlightGear wiki
Jump to navigation Jump to search

The purpose of this page is to provide a todo-list or check-list for anyone that wants to help clean up the Flightgear (FG) code. In addition to this list, you also want to try running FG in Valgrind, a very powerful memory debugger and profiler. http://freshmeat.net/projects/valgrind/

Feel free to add additional items to this page

Thanks -- Cameron Moore

Major Task List

  • Move code out of fgMainLoop() and into separate functions or source files.
  • Replace system() calls in simgear/io/sg_binobj.cxx to `mkdir`
  • Replace system() call in simgear/io/sg_binobj.cxx to `gzip`
  • Allow aircraft to be reliably changed at runtime, without requiring a restart of FlightGear
  • Implement scenery support for dynamic LOD configuration at runtime
  • Optimize the 3D panel code and optionally support display list usage
  • Add OpenGL bindings to the scripting language Nasal to support scripted creation of instruments like the HUD

Persistent Checklist

Carelessness

  • Properly allocate and deallocate memory using malloc/new/new[{][}] and free/delete/delete[{][}]. Valgrind is helpful when looking for these.
  • Close any open file streams when you're through with them. Take care to not write to or close streams that aren't open. Avoid this by initializing file pointers/handles with 0 before use and verify that it is not 0 before writing/closing.

Compatibility

  • Use the SG_LOG() facilities instead of cout and printf().
  • Use the SG_USING_STD() facilities instead of explicitly using std::function.
  • Use the STL_* variables defined in simgear/compiler.h when including STL headers.
  • When including header files, only use double-quotes when the header is in the same directory.

Performance

  • When performance is crucial, consider using the "fastmath.hxx" headers.

Security

  • Use C-string functions with fixed write buffers whenever possible to avoid buffer overflows.

For example, use snprintf() instead of sprintf() and strncpy() instead of strcpy().