Skip to content
Raymond Chen edited this page Apr 2, 2019 · 9 revisions

writer_base

Open

  • write_printf should not crash if the result of the sprintf exceeds 128 characters.
  • flush_to_file writes the file in binary format, which does not match the behavior of flush_to_console, which is text format.

row_base

Open

  • get_list does not validate that first is before last. (Corrupted database.)

view

Open

  • as does not validate alignment, can result in bus errors on alignment-sensitive systems.

MethodDefSig

Open

  • Params() method returns a const vector instead of a pair of iterators like everybody else.

TypeSig, PropertySig

Open

  • Contains a m_cmod which is never used. Are we missing a CustomMod() member function?
  • PropertSig also has m_param_count and m_params that are never used.

coded_index

  • It seems that the row is biased by 1 so that operator bool() can test the raw index against zero to determine whether the coded_index is empty. But why do it this way, instead of letting m_table == nullptr be the representation of an empty coded index, the same way that row_base represents empty rows? Is this a leftover from a previous version of coded_index that did not keep a pointer to the table?

  • Why isn't get_row marked noexcept? It seems that all the functions it calls are noexcept, so get_row should also be noexcept.

Clone this wiki locally