On Friday, 12 September 2014 at 15:26:34 UTC, Ali Çehreli wrote:


you are right, it was a reduced form, of a very complex software.

in file a.d

module a;

class class_a
{

   struct RESULT{
   string[] raw;
   void* res;
  }


RESULT * r;

void dothing()
{
   r = new RESULT;

   string aa = "string";

   r.raw ~= aa;
   r.res = cast(void*) aa;
}

}


in file b.d

import a;    // import path is okey

class class_b
{

   void doThings(class_a * ptr_a)
  {
     class_a A = *ptr_a;
     writeln(A.r.raw[0]); // prints aa;
writeln(A.r.res); // fails : core.exception.OutOfMemoryError@(0)
                              // but if i do comment the line :
// writeln(A.r.raw[0]); out, then works
  }
}


in file c.d

import a;
import b;

void main() {

clsa = new class_a;
clsb = new class_b;

clsa.dothing();
clsa.doThings( & clsa);


}

Reply via email to