[GRASS-dev] Re: [GRASS-user] barin option in r.flow module

hmitaso at ncsu.edu hmitaso at ncsu.edu
Thu Jan 1 21:46:33 EST 2009


> On Sun, Dec 21, 2008 at 5:56 AM, Glynn Clements
> <glynn at gclements.plus.com> wrote:
>>
>> Markus Neteler wrote:
>>
>>> >> Hello everybody,
>>> >> I have got some troubles using r.flow with this option..it stays
>>> forever
>>> >> at the:
>>> >> Reading input files: elevation...
>>> >> , barrier
>>> >> If I remove the barin option, all is fine.
>>> >> I am using the DEM from spearfish with GRASS 6.2.3 and latest
>>> 6.4svn.
>>> >>
>>> > This is how replicate using Spearfish dataset:
>>> > g.region rast=elevation.10m
>>> > v.to.rast input=streams at PERMANENT output=streamsTest use=val
>>> type=line layer=1 value=1 rows=4096 --overwrite
>>> > r.null map=streamsTest null=0
>>> > r.report units=me map=streamsTest | grep "no data"
>>> > r.flow elevin=elevation.10m barin=streamsTest skip=37 bound=9432
>>> flout=testvector lgout=testraster
>>>
>>> I can reproduce the crash (one typo fixed in above example):
>>>
>>>
>>> (gdb) r elevin=elevation.10m barin=streamTest skip=37 bound=9432
>>> flout=testvector lgout=testraster
>>
>>> Reading input files: barrier
>>>
>>> Program received signal SIGSEGV, Segmentation fault.
>>> [Switching to Thread 47222862720544 (LWP 24952)]
>>> 0x00000000004050b8 in read_input_files () at io.c:121
>>> 121                         put(ds, row, col, -1);
>>
>> Initialisation of ds is conditional upon parm.dsout, which isn't set.
>>
>> This should fix the immediate problem:
>>
>> --- raster/r.flow/io.c  (revision 34960)
>> +++ raster/r.flow/io.c  (working copy)
>> @@ -117,7 +117,7 @@
>>            G_get_d_raster_row(fd, barc, row);
>>            for (col = 0; col < region.cols; col++) {
>>                BM_set(bitbar, col, row, (barc[col] != 0));
>> -               if (barc[col] != 0)
>> +               if (parm.dsout && barc[col] != 0)
>>                    put(ds, row, col, -1);
>>            }
>>        }
>
> Thanks. Fixed in
> 7.svn, 6.4.svn, 6.4.0svn, 6.3.svn.
>
> (note to devs: the backporting took about 30 seconds in total).
>
>> but I don't know if there are similar cases. If the two are intimately
>> related, then main() will need e.g.:
>>
>>        if (parm.barin && !parm.dsout)
>>            G_fatal_error(_("barin= requires dsout="));
>
> I have left that out for now as it does not seem to be a requirement.
> Maybe Helena has a suggestion here.

barin does not require dsout (unless there is another bug),
thanks for fixing this,

Helena

>
> Markus
> _______________________________________________
> grass-dev mailing list
> grass-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-dev
>



More information about the grass-dev mailing list