[mythtv-commits] Ticket #1749: [PATCH] USALS array overflow problem

MythTV mythtv at cvs.mythtv.org
Sat Apr 29 17:39:56 UTC 2006

#1749: [PATCH] USALS array overflow problem
 Reporter:  yeasah at schwide.net  |       Owner:  danielk
     Type:  defect              |      Status:  new    
 Priority:  minor               |   Milestone:         
Component:  mythtv              |     Version:         
 Severity:  medium              |  
 There's a problem with the USALS code in libs/libmythtv/dvbdiseqc.cpp that
 causes the positioner gotox values to be calculated incorrectly for
 certain positions. The problem is caused by an overrun of a table. The
 index of a 10 element table is given by the following code:

    CMD2 += DecimalLookup[(int)round(USALS*10)];

 Where in that context USALS is a floating point value which can range from
 0.0 to 0.999999, which causes the resultant index to be from 0-10, and
 thus overruns the end of the table by 1 (returning bogus positioning data
 in this case). The simplest solution woud be to change the code to use

    CMD2 += DecimalLookup[(int)floor(USALS*10)];

 However, the presence of the table is silly anyway -- the spec shows a
 lookup table as decimal only as a convenience, the encoding is actually as
 a fixed point fraction. As such, the correct value would most easily be
 calculated directly from the angle. Attached is a patch that eliminates
 the table overrun problem, and is also more accurate (and less
 complicated, too).

 I would suggest that this be applied to 0.19-fixes as well as the trunk,
 since the problem really does cause issues with positioning. In the past,
 I've had to work around "bad" angles by adding some small value to the
 angle I actually wanted.

Ticket URL: <http://svn.mythtv.org/trac/ticket/1749>
MythTV <http://www.mythtv.org/>

More information about the mythtv-commits mailing list