www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1898] New: infinite loop when allocate an array of AA

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1898

           Summary: infinite loop when allocate an array of AA
           Product: D
           Version: 2.012
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: someanon yahoo.com


How to allocate an array of AA?

1)
I tried two ways (new, and setting array length), in both cases the code
compiles, but the executable seems run into infinite loop, and never finish.

2)
how to new an AA? what's the syntax? 

http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D&artnum=67463
http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D&artnum=67466

$ cat mapbug.d

void allocAA() {
  int[int][] maps;
  maps = new int[int][3];
  maps.length = 3;

  int[int]* mapsp;
//mapsp = new int[int];  // this line need size of rightmost array, not type
int
}

int main() {
  allocAA();

  return 0;
}


-- 
Mar 08 2008
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1898






Created an attachment (id=232)
 --> (http://d.puremagic.com/issues/attachment.cgi?id=232&action=view)
infinite loop, allocate an array of AA


-- 
Mar 08 2008
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1898


smjg iname.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |smjg iname.com
             Status|NEW                         |RESOLVED
           Keywords|                            |wrong-code
         Resolution|                            |DUPLICATE





As for your second question, I'm not sure that there's a general way.  But

    mapsp = (new int[int][1]).ptr;

should work once the underlying bug is fixed.  Meanwhile, a workaround is

    int[int][1] mapsa;
    mapsp = mapsa.dup.ptr;

But since the main bug you're reporting has already been reported and voted on,
I'm marking this as a dupe.

*** This bug has been marked as a duplicate of 929 ***


-- 
Nov 20 2008