Hallo Berthold,
On March 14th you introduced a PR entitled Cleanup: fix "unsave"
snprintf()s in plannernotes.c
<https://github.com/Subsurface-divelog/subsurface/commit/a4834e198d55d50a44d6f80e2137777b64652ce7#diff-0df10959bbcbe5342528360ce6f541a5>
for Subsurface.
This PR affected the function add_icd_entry() in plannernotes.c. The
changes, unfortunately, introduced a bug in the display of the icd data
for a dive. I include a sample dive plan so that you can see the effect
of this change in code. Activate the display of icd data in Preferences,
open the attached dive plan and edit the dive plan within the planner.
You will see random information being added to the icd data. In fact the
icd data are quite messed up because the table should include two lines
of gas change information. At least part of the problem lies in lines
55-68 of plannernotes.c.
I spent a bit of time trying to track down the problem, but it appears
to be a pointer that writes to a buffer where it should not write to.
Would you be prepared at all to look at this issue?
Kind regards,
willem
--
This message and attachments are subject to a disclaimer.
Please refer to
http://upnet.up.ac.za/services/it/documentation/docs/004167.pdf
<http://upnet.up.ac.za/services/it/documentation/docs/004167.pdf> for
full
details.
<divelog program='subsurface' version='3'>
<settings>
</settings>
<divesites>
</divesites>
<dives>
<dive number='1' date='2018-05-18' time='09:09:40' duration='76:30 min'>
<notes><div><b>DISCLAIMER / WARNING: THIS IS A NEW IMPLEMENTATION OF THE BUHLMANN ALGORITHM AND A DIVE PLANNER IMPLEMENTATION BASED ON THAT WHICH HAS RECEIVED ONLY A LIMITED AMOUNT OF TESTING. WE STRONGLY RECOMMEND NOT TO PLAN DIVES SIMPLY BASED ON THE RESULTS GIVEN HERE.</b><br></div><div><b>Subsurface (4.7.8.182) dive plan</b> created on 2018/05/18</b><br>Runtime: 77min<br></div><table><thead><tr><th></th><th>depth</th><th style='padding-left: 10px;'>duration</th><th style='padding-left: 10px;'>runtime</th><th style='padding-left: 10px; float: left;'>gas</th></tr></thead><tbody style='float: left;'><tr><td style='padding-left: 10px; float: right;'>&#10136;</td><td style='padding-left: 10px; float: right;'> 20m</td><td style='padding-left: 10px; float: right;'> 1min</td><td style='padding-left: 10px; float: right;'> 1min</td><td style='padding-left: 10px; color: red; float: left;'><b>EAN50</b></td></tr><tr><td style='padding-left: 10px; float: right;'>&#10137;</td><td style='padding-left: 10px; float: right;'> 20m</td><td style='padding-left: 10px; float: right;'> 1min</td><td style='padding-left: 10px; float: right;'> 2min</td><td style='padding-left: 10px; color: red; float: left;'><b>(30/20)</b></td></tr><tr><td style='padding-left: 10px; float: right;'>&#10136;</td><td style='padding-left: 10px; float: right;'> 45m</td><td style='padding-left: 10px; float: right;'> 2min</td><td style='padding-left: 10px; float: right;'> 4min</td><td style='padding-left: 10px; color: red; float: left;'><b>(20/32)</b></td></tr><tr><td style='padding-left: 10px; float: right;'>&#10136;</td><td style='padding-left: 10px; float: right;'> 65m</td><td style='padding-left: 10px; float: right;'> 2min</td><td style='padding-left: 10px; float: right;'> 6min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10137;</td><td style='padding-left: 10px; float: right;'> 65m</td><td style='padding-left: 10px; float: right;'> 20min</td><td style='padding-left: 10px; float: right;'> 26min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 42m</td><td style='padding-left: 10px; float: right;'> 3min</td><td style='padding-left: 10px; float: right;'> 29min</td><td style='padding-left: 10px; color: red; float: left;'><b>(30/20)</b></td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 27m</td><td style='padding-left: 10px; float: right;'> 2min</td><td style='padding-left: 10px; float: right;'> 30min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 27m</td><td style='padding-left: 10px; float: right;'> 2min</td><td style='padding-left: 10px; float: right;'> 32min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 24m</td><td style='padding-left: 10px; float: right;'> 0min</td><td style='padding-left: 10px; float: right;'> 32min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 24m</td><td style='padding-left: 10px; float: right;'> 2min</td><td style='padding-left: 10px; float: right;'> 34min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 21m</td><td style='padding-left: 10px; float: right;'> 0min</td><td style='padding-left: 10px; float: right;'> 34min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 21m</td><td style='padding-left: 10px; float: right;'> 2min</td><td style='padding-left: 10px; float: right;'> 36min</td><td style='padding-left: 10px; color: red; float: left;'><b>EAN50</b></td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 18m</td><td style='padding-left: 10px; float: right;'> 0min</td><td style='padding-left: 10px; float: right;'> 36min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 18m</td><td style='padding-left: 10px; float: right;'> 2min</td><td style='padding-left: 10px; float: right;'> 38min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 15m</td><td style='padding-left: 10px; float: right;'> 0min</td><td style='padding-left: 10px; float: right;'> 38min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 15m</td><td style='padding-left: 10px; float: right;'> 3min</td><td style='padding-left: 10px; float: right;'> 41min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 12m</td><td style='padding-left: 10px; float: right;'> 0min</td><td style='padding-left: 10px; float: right;'> 41min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 12m</td><td style='padding-left: 10px; float: right;'> 5min</td><td style='padding-left: 10px; float: right;'> 46min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 9m</td><td style='padding-left: 10px; float: right;'> 0min</td><td style='padding-left: 10px; float: right;'> 46min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 9m</td><td style='padding-left: 10px; float: right;'> 7min</td><td style='padding-left: 10px; float: right;'> 53min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 6m</td><td style='padding-left: 10px; float: right;'> 0min</td><td style='padding-left: 10px; float: right;'> 53min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 6m</td><td style='padding-left: 10px; float: right;'> 8min</td><td style='padding-left: 10px; float: right;'> 61min</td><td style='padding-left: 10px; color: red; float: left;'><b>oxygen</b></td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 3m</td><td style='padding-left: 10px; float: right;'> 1min</td><td style='padding-left: 10px; float: right;'> 62min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>-</td><td style='padding-left: 10px; float: right;'> 3m</td><td style='padding-left: 10px; float: right;'> 15min</td><td style='padding-left: 10px; float: right;'> 76min</td><td>&nbsp;</td></tr><tr><td style='padding-left: 10px; float: right;'>&#10138;</td><td style='padding-left: 10px; float: right;'> 0m</td><td style='padding-left: 10px; float: right;'> 1min</td><td style='padding-left: 10px; float: right;'> 77min</td><td>&nbsp;</td></tr></tbody></table><br><div>CNS: 65%<br>OTU: 130<br></div><div>Deco model: Bühlmann ZHL-16C with GFLow = 35% and GFHigh = 75%<br>ATM pressure: 1 013mbar (0m)<br></div><div>Gas consumption (based on SAC 18|15â/min):<br>737â/66bar of <span style='color: red;'><b>EAN50</b></span> (649â/62bar in planned ascent)<br></div>3 170â/140bar of <span style='color: red;'><b>(20/32)</b></span> (244â/10bar in planned ascent)<br>&nbsp;&mdash; <span style='color: green;'>Minimum gas</span> (based on 2,0xSAC/+1min@65m): 761â/32bar<span style='color: grey;'>/&Delta;:71bar</span><br></div>478â/44bar of <span style='color: red;'><b>(30/20)</b></span> (327â/32bar in planned ascent)<br></div>485â/42bar of <span style='color: red;'><b>oxygen</b></span> (485â/44bar in planned ascent)<br></div><div>Isobaric counterdiffusion information:<table><tr><td align='left'><b>runtime</b></td><td align='center'><b>gaschange</b></td><td style='padding-left: 15px;'><b>&#916;He</b></td><td style='padding-left: 20px;'><b>&#916;N&#8322;</b></td><td style='padding-left: 10px;'><b>max &#916;N&#8322;</b></td></tr><tr><td rowspan='2' style= 'vertical-align:top;'> 29min</td><td rowspan=2 style= 'vertical-align:top;'>(20/32)&#10137;(30/20)</td><td style='padding-left: 10px;'>-12,0%</td><td style= 'padding-left: 15px; color:#383838;'> +2,0%</td><td style='padding-left: 15px;'> +2,4%</td></tr><tr><td style='padding-left: 10px;'>-0,63bar</td><td style='padding-left: 15px; color:#383838;'>+0,11bar</td><td style='padding-left: 15px;'>+0,13bar</td></tr></tbody></table><br></div><div><span style='color: red;'>Warning: </span> high pOâ value 1,65 at 4:00 with gas (30/20) at depth 45 m<br></div></notes>
<cylinder size='11.094 l' workpressure='206.843 bar' description='AL80' o2='50.0%' start='206.843 bar' end='140.556 bar' depth='21.0 m' />
<cylinder size='24.0 l' workpressure='232.0 bar' description='D12 232 bar' o2='20.0%' he='32.0%' start='232.0 bar' end='92.357 bar' depth='69.0 m' />
<cylinder size='11.094 l' workpressure='206.843 bar' description='AL80' o2='30.0%' he='20.0%' start='206.843 bar' end='162.485 bar' depth='42.0 m' />
<cylinder size='11.094 l' workpressure='206.843 bar' description='AL80' o2='100.0%' start='206.843 bar' end='164.994 bar' depth='6.0 m' />
<divecomputer model='planned dive' last-manual-time='26:00 min'>
<depth max='65.0 m' mean='27.951 m' />
<surface pressure='1.013 bar' />
<event time='2:01 min' type='25' value='1310750' name='gaschange' cylinder='2' o2='30.0%' he='20.0%' />
<event time='4:01 min' type='25' value='2097172' name='gaschange' cylinder='1' o2='20.0%' he='32.0%' />
<event time='28:35 min' type='25' value='1310750' name='gaschange' cylinder='2' o2='30.0%' he='20.0%' />
<event time='34:21 min' type='11' value='50' name='gaschange' cylinder='0' o2='50.0%' />
<event time='53:21 min' type='11' value='100' name='gaschange' cylinder='3' o2='100.0%' />
<sample time='0:00 min' depth='0.0 m' pressure='206.843 bar' />
<sample time='1:06 min' depth='20.0 m' pressure='203.243 bar' />
<sample time='2:00 min' depth='20.0 m' pressure='198.833 bar' />
<sample time='2:01 min' depth='20.0 m' />
<sample time='4:00 min' depth='45.0 m' pressure='192.675 bar' />
<sample time='4:01 min' depth='45.0 m' />
<sample time='6:00 min' depth='65.0 m' pressure='221.707 bar' />
<sample time='26:00 min' depth='65.0 m' pressure='102.619 bar' />
<sample time='28:34 min' depth='42.0 m' pressure='92.357 bar' />
<sample time='28:35 min' depth='42.0 m' />
<sample time='30:14 min' depth='27.0 m' pressure='182.463 bar' />
<sample time='32:00 min' depth='27.0 m' pressure='173.414 bar' />
<sample time='32:20 min' depth='24.0 m' pressure='171.782 bar' />
<sample time='34:00 min' depth='24.0 m' pressure='163.973 bar' />
<sample time='34:20 min' depth='21.0 m' pressure='162.485 bar' />
<sample time='34:21 min' depth='21.0 m' />
<sample time='36:00 min' depth='21.0 m' pressure='191.885 bar' />
<sample time='36:20 min' depth='18.0 m' pressure='190.554 bar' />
<sample time='38:00 min' depth='18.0 m' pressure='184.237 bar' />
<sample time='38:20 min' depth='15.0 m' pressure='183.045 bar' />
<sample time='41:00 min' depth='15.0 m' pressure='174.048 bar' />
<sample time='41:20 min' depth='12.0 m' pressure='172.995 bar' />
<sample time='46:00 min' depth='12.0 m' pressure='159.19 bar' />
<sample time='46:20 min' depth='9.0 m' pressure='158.276 bar' />
<sample time='53:00 min' depth='9.0 m' pressure='141.333 bar' />
<sample time='53:20 min' depth='6.0 m' pressure='140.556 bar' />
<sample time='53:21 min' depth='6.0 m' />
<sample time='61:00 min' depth='6.0 m' pressure='190.994 bar' />
<sample time='61:30 min' depth='3.0 m' pressure='190.058 bar' />
<sample time='76:00 min' depth='3.0 m' pressure='165.734 bar' />
<sample time='76:30 min' depth='0.0 m' pressure='164.994 bar' />
</divecomputer>
</dive>
</dives>
</divelog>
_______________________________________________
subsurface mailing list
subsurface@subsurface-divelog.org
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface