Thanks, Simon. j<*m was the cause of the crush. I really appreciate your
help.

Xiangyang

On Tue, Apr 14, 2009 at 5:55 PM, Simon Urbanek
<simon.urbanek@r-project.org>wrote:

>
> On Apr 14, 2009, at 4:57 PM, Xiangyang Ye wrote:
>
> Hi All,
>>
>> I tried my best to figure out how to deal with the freezing R console but
>> with no luck. I followed the instructions of calling R_ProcessEvents()
>> regularly but still couldn't work it out (the callings were removed from
>> the
>> below C code).
>>
>>
> It's not a hang - it's a crash because of a bug in your code. Look at the
> last loop - I suspect you meant j<*n and not j<*m otherwise you'll be
> corrupting memory.
>
> FWIW if you want to make a GUI responsive, you should be calling
> R_CheckUserInterrupt() and not R_ProcessEveents() because the latter is not
> available on all platforms.
>
> Cheers,
> Simon
>
>
>   I am using R-2.8.1 on Windows XP service pack 3. The Rtools is version
>> 2.9.
>> I have the following C code:
>>
>> void rx(int *n, int *m, int *rxmax,int *rxdate, int *refills,int *rxs) {
>>  int i,j,k, total;
>>  int cap[*n][*m];
>>  int rx[*n* *rxmax][*n];
>>
>>  for (i=0;i<*n;i++)
>>   for (j=0;j<*m;j++)
>>  cap[i][j]=0;
>>
>>  for (i=0;i<*n* *rxmax;i++) {
>>  rx[i][0]=*(rxdate+i);
>>    rx[i][1]=*(refills+i);
>>    }
>>
>>  for (i=0;i<*n;i=i+1)
>>  for (j=*rxmax *i;j<(i+1) * *rxmax-1;j++)
>>       if (rx[j][0] > 0)
>>         for (k = rx[j][0]; k < rx[j][0] + rx[j][1]; k++){
>>         if (k<*m)
>>           cap[i][k]=1; }
>>
>>  for (j=0;j<*m;j++)
>>   for (i=0,total=0;i<*m;i++) {
>>     total= total+cap[j][i];
>>     rxs[j]=total;
>>     }
>> }
>>
>> And the following R code:
>>
>> dyn.load("c:/temp/rxc.dll")
>> rx=matrix(c(1,5,11,5,21,5,0,0,
>>           1,10,21,10,0,0,0,0),nrow=8, byrow=T);
>> n=2
>> m=31
>> x=c(1:n)
>> rxmax= dim(rx)[[1]]/n
>> xx <- .C("rx",n=as.integer(n),m=as.integer(m),rxmax=as.integer(rxmax),
>>     rxdate = as.integer(rx[,1]),
>>     refills = as.integer(rx[,2]),rxs=as.integer(x))
>> xx$rxs
>>
>>
>> After I created the .dll file, I was able to load it into R and got the
>> result that I expected. But if I re-run the code for several times, the R
>> console will freeze.
>>
>> Thanks in advance.
>>
>> Xiangyang
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
>>
>

	[[alternative HTML version deleted]]

