﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
1497	bugs on handling tile parameters in parseCfg()	vulcano		"==Summery==
We found out that the Encoder config file parser could not correctly handling the size of tile columns or rows array configuration. 
Revision 4974
=='''Bugs Location 1'''==
source\App\TAppEncoder\TAppEncCfg.cpp:1279~1330
*Problem: While try to catch unexpected tile columns/rows array configuration, there should be using ''m_numTileColumns/RowsMinus1 +1 ''instead of ''m_numTileColumns/RowsMinus1''.
===Original Source-code===
{{{
#!cpp
  if( !m_tileUniformSpacingFlag && m_numTileColumnsMinus1 > 0 )
  {
>    if (cfg_ColumnWidth.values.size() > m_numTileColumnsMinus1)
    {
      printf( ""The number of columns whose width are defined is larger than the allowed number of columns.\n"" );
      exit( EXIT_FAILURE );
    }
>    else if (cfg_ColumnWidth.values.size() < m_numTileColumnsMinus1)
    {
      printf( ""The width of some columns is not defined.\n"" );
      exit( EXIT_FAILURE );
    }
    else
    {
>      m_tileColumnWidth.resize(m_numTileColumnsMinus1);
      for(UInt i=0; i<cfg_ColumnWidth.values.size(); i++)
      {
        m_tileColumnWidth[i]=cfg_ColumnWidth.values[i];
      }
    }
  }
}}}
===Possible solution===
{{{
#!cpp
  if( !m_tileUniformSpacingFlag && m_numTileColumnsMinus1 > 0 )
  {
>    if (cfg_ColumnWidth.values.size() > (m_numTileColumnsMinus1+1))
    {
      printf( ""The number of columns whose width are defined is larger than the allowed number of columns.\n"" );
      exit( EXIT_FAILURE );
    }
>    else if (cfg_ColumnWidth.values.size() < (m_numTileColumnsMinus1+1))
    {
      printf( ""The width of some columns is not defined.\n"" );
      exit( EXIT_FAILURE );
    }
    else
    {
>      m_tileColumnWidth.resize(m_numTileColumnsMinus1+1);
      for(UInt i=0; i<cfg_ColumnWidth.values.size(); i++)
      {
        m_tileColumnWidth[i]=cfg_ColumnWidth.values[i];
      }
    }
  }
}}}
=='''Bugs Location 2'''==
source\Lib\TLibEncoder\TEncCfg.cpp:1336~1375
*Problem :While try to catch over-sized tile columns/rows array configuration, The for loop to add up the ColumnWidth/RowHeight should be repeated ''m_iNumRowsMinus1+1'' times. The ''uiCummulativeRowHeight'' need to be equal with ''iHeightInCU''.
===Original Source-code===
{{{
#!cpp
> for(Int i=0; i<m_iNumColumnsMinus1; i++)
    {
      uiCummulativeColumnWidth += m_tileColumnWidth[i];
    }
> if( uiCummulativeColumnWidth >= iWidthInCU )
    {
      printf( ""The width of the column is too large.\n"" );
      exit( EXIT_FAILURE );
    }
}}}
===Possible solution===
{{{
#!cpp
> for(Int i=0; i<(m_iNumColumnsMinus1+1); i++)
    {
      uiCummulativeColumnWidth += m_tileColumnWidth[i];
    }
> if( uiCummulativeColumnWidth > iWidthInCU )
    {
      printf( ""The width of the column is too large.\n"" );
      exit( EXIT_FAILURE );
    }
}}}"	defect	closed	minor	HM-next	HM	HM-16.14	invalid		ksuehring davidf karlsharman jct-vc@…
