<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Apr 12, 2018 at 9:48 AM, Smith, Barry F. <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
<br>
> On Apr 12, 2018, at 3:59 AM, Patrick Sanan <<a href="mailto:patrick.sanan@gmail.com">patrick.sanan@gmail.com</a>> wrote:<br>
><br>
> I also happened to stumble across this yesterday. Is the length restriction for the default printer (l assume from the array of 8*1024 chars in PetscVFPrintfDefault() ) intended behavior to be documented, or a bug to be fixed?<br>
<br>
</span>     You could call it either. My problems are<br>
<br>
1) that given a format string I don't know in advance how much work space is needed so cannot accurately malloc, for sure, enough space<br>
<br>
2) since this can be called in an error handler I really don't want it calling malloc().<br></blockquote><div>PetscVSNPrintf does still contain a malloc "122  ierr      = PetscMalloc1(oldLength, &newformat);CHKERRQ(ierr);"</div><div>Also, vsnprintf returns "t<span style="color:rgb(0,0,0);font-family:verdana,arial,helvetica,sans-serif;font-size:12px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">he number of characters that would have been written if<span> </span></span><var style="color:rgb(0,0,0);font-family:verdana,arial,helvetica,sans-serif;font-size:12px;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">n</var><span style="color:rgb(0,0,0);font-family:verdana,arial,helvetica,sans-serif;font-size:12px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span> </span>had been sufficiently large</span>". I don't know why you void'ed it.</div><div>We can not make the 8K chars a requirement since users don't know how many chars they want to print upfront.</div><div>Anyway, crash is better than silent errors. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
   Hence it lives in this limbo. I don't even know a way to add a good error checking that detects if the buffer is long enough. All in all it is bad ugly code, any suggestions on improvements would be appreciated.<br>
<span class="gmail-HOEnZb"><font color="#888888"><br>
   Barry<br>
</font></span><div class="gmail-HOEnZb"><div class="gmail-h5"><br>
><br>
> 2018-04-12 2:16 GMT+02:00 Rongliang Chen <<a href="mailto:rongliang.chan@gmail.com">rongliang.chan@gmail.com</a>>:<br>
> Thanks Barry. I found petsc-3.6 and older versions did not have this restriction.<br>
><br>
> Best,<br>
> Rongliang<br>
><br>
><br>
> On 04/12/2018 07:22 AM, Smith, Barry F. wrote:<br>
>    Yes, PetscPrintf() and related functions have a maximum string length of about 8000 characters.<br>
><br>
>     Barry<br>
><br>
><br>
> On Apr 11, 2018, at 6:17 PM, Rongliang Chen <<a href="mailto:rongliang.chan@gmail.com">rongliang.chan@gmail.com</a>> wrote:<br>
><br>
> Dear All,<br>
><br>
><br>
> When I tried to print a long string using PetscPrintf() I found that it truncated the string. Attached is a simple example for this (run with single processor). I used PetscPrintf() and printf() to print the same string and the printf() seems OK. I am using petsc-3.8.4.<br>
><br>
><br>
> Best,<br>
><br>
> Rongliang<br>
><br>
> <ex111.c><br>
><br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div></div>