<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hello all - good stuff happening here!<div><br></div><div>I managed to get segfaults when using&nbsp;dlo_copy_host_bmp().</div><div><br></div><div>This uses cmd_stripe24 to draw the raw pixels to the device, and it turns out that if you have big bitmaps to draw, this can overflow its buffer before it flushes it to the device.</div><div><br></div><div>There's a patch for dlo_grfx.c below.</div><div><br></div><div><div>All the best,</div><div>Quentin</div><div><br></div><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F">----</font></div><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F">Dr Quentin Stafford-Fraser</font></div><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F">CEO, CamVine</font></div><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F"><a href="mailto:quentin@camvine.com">quentin@camvine.com</a></font></div><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F">61 Selwyn Road, Cambridge CB3 9EA, UK</font></div><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F">Skype: quentinsf</font></div><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F">tel: &nbsp;+44 1223 852132 / 690771</font></div><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F">mob: +44 7798 851702</font></div><div style="font-size: 10px; "><font class="Apple-style-span" color="#7F7F7F">camvine.com</font></div><div><font class="Apple-style-span" color="#7F7F7F"><br class="khtml-block-placeholder"></font></div><div><div style="font-size: 9px; "><font class="Apple-style-span" color="#7F7F7F">Registered in England No: 6200773</font></div><div style="font-size: 9px; "><font class="Apple-style-span" color="#7F7F7F">Registered Office: Salisbury House, Station Road, Cambridge CB1 2LA</font></div><div style="font-size: 9px; "><font class="Apple-style-span" color="#7F7F7F">&nbsp;</font></div><div><font class="Apple-style-span" color="#7F7F7F" size="1"><span class="Apple-style-span" style="font-size: 9px;"><br></span></font></div></div></span></span></span></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></div></div></div></div><div><br></div><div><div>diff --git a/src/dlo_grfx.c b/src/dlo_grfx.c</div><div>index 3e9008a..54f41ed 100644</div><div>--- a/src/dlo_grfx.c</div><div>+++ b/src/dlo_grfx.c</div><div>@@ -690,6 +690,10 @@ static dlo_retcode_t cmd_stripe24(dlo_device_t * const dev, dlo_ptr_t base16, dl</div><div>&nbsp;&nbsp; &nbsp; *(dev-&gt;bufptr)++ = (char)(base16 &amp; 0xFF);</div><div>&nbsp;&nbsp; &nbsp; *(dev-&gt;bufptr)++ = rem &gt;= RAW_MAX_PIXELS ? 0 : rem;</div><div>&nbsp;</div><div>+ &nbsp; &nbsp;/* Flush the command buffer if it's getting full */</div><div>+ &nbsp; &nbsp;if (dev-&gt;bufend - dev-&gt;bufptr - BYTES_PER_16BPP * RAW_MAX_PIXELS &lt; BUF_HIGH_WATER_MARK)</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp;ERR(dlo_usb_write(dev));</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; for (pix = 0; pix &lt; (rem &gt;= RAW_MAX_PIXELS ? RAW_MAX_PIXELS : rem); pix++)</div><div>&nbsp;&nbsp; &nbsp; {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; dlo_col16_t col = *ptr_col16++;</div><div>@@ -711,6 +715,10 @@ static dlo_retcode_t cmd_stripe24(dlo_device_t * const dev, dlo_ptr_t base16, dl</div><div>&nbsp;&nbsp; &nbsp; *(dev-&gt;bufptr)++ = (char)(base8 &amp; 0xFF);</div><div>&nbsp;&nbsp; &nbsp; *(dev-&gt;bufptr)++ = rem &gt;= RAW_MAX_PIXELS ? 0 : rem;</div><div>&nbsp;</div><div>+ &nbsp; &nbsp;/* Flush the command buffer if it's getting full */</div><div>+ &nbsp; &nbsp;if (dev-&gt;bufend - dev-&gt;bufptr - BYTES_PER_8BPP * RAW_MAX_PIXELS &lt; BUF_HIGH_WATER_MARK)</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp;ERR(dlo_usb_write(dev));</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; for (pix = 0; pix &lt; (rem &gt;= RAW_MAX_PIXELS ? RAW_MAX_PIXELS : rem); pix++)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; *(dev-&gt;bufptr)++ = (char)(*ptr_col8++);</div><div><br></div><div><br></div></div></body></html>