<p><b>duda</b> 2010-03-02 18:16:54 -0700 (Tue, 02 Mar 2010)</p><p>Fix bug in handling of time-invariant super-arrays in registry code.<br>
<br>
M    Registry/gen_inc.c<br>
</p><hr noshade><pre><font color="gray">Modified: trunk/swmodel/Registry/gen_inc.c
===================================================================
--- trunk/swmodel/Registry/gen_inc.c        2010-03-03 01:16:01 UTC (rev 121)
+++ trunk/swmodel/Registry/gen_inc.c        2010-03-03 01:16:54 UTC (rev 122)
@@ -311,8 +311,8 @@
                var_ptr2 = var_ptr;
                var_ptr = var_ptr-&gt;next;
             }
-            if (vtype == INTEGER)  fortprintf(fd, &quot;      type (field%idInteger), pointer :: %s</font>
<font color="red">&quot;, (var_ptr2-&gt;ndims)+1, var_ptr2-&gt;name_in_code);
-            if (vtype == REAL)     fortprintf(fd, &quot;      type (field%idReal), pointer :: %s</font>
<font color="blue">&quot;, (var_ptr2-&gt;ndims)+1, var_ptr2-&gt;name_in_code);
+            if (vtype == INTEGER)  fortprintf(fd, &quot;      type (field%idInteger), pointer :: %s</font>
<font color="blue">&quot;, (var_ptr2-&gt;ndims)+1, var_ptr2-&gt;super_array);
+            if (vtype == REAL)     fortprintf(fd, &quot;      type (field%idReal), pointer :: %s</font>
<font color="black">&quot;, (var_ptr2-&gt;ndims)+1, var_ptr2-&gt;super_array);
          }
          else {
             if (var_ptr-&gt;vtype == INTEGER)  fortprintf(fd, &quot;      type (field%idInteger), pointer :: %s</font>
<font color="gray">&quot;, var_ptr-&gt;ndims, var_ptr-&gt;name_in_code);
@@ -377,13 +377,15 @@
             memcpy(super_array, var_ptr-&gt;super_array, 1024);
             memcpy(array_class, var_ptr-&gt;array_class, 1024);
             vtype = var_ptr-&gt;vtype;
+            i = 0;
             while (var_ptr &amp;&amp; strncmp(super_array, var_ptr-&gt;super_array, 1024) == 0) {
+               i++;
                var_ptr2 = var_ptr;
                var_ptr = var_ptr-&gt;next;
             }
-            fortprintf(fd, &quot;      allocate(g %% %s)</font>
<font color="red">&quot;, var_ptr2-&gt;name_in_code);
-            fortprintf(fd, &quot;      allocate(g %% %s %% ioinfo)</font>
<font color="red">&quot;, var_ptr2-&gt;name_in_code);
-            fortprintf(fd, &quot;      allocate(g %% %s %% array(&quot;, var_ptr2-&gt;name_in_code);
+            fortprintf(fd, &quot;      allocate(g %% %s)</font>
<font color="blue">&quot;, var_ptr2-&gt;super_array);
+            fortprintf(fd, &quot;      allocate(g %% %s %% ioinfo)</font>
<font color="gray">&quot;, var_ptr2-&gt;super_array);
+            fortprintf(fd, &quot;      allocate(g %% %s %% array(%i, &quot;, var_ptr2-&gt;super_array, i);
             dimlist_ptr = var_ptr2-&gt;dimlist;
             fortprintf(fd, &quot;%s&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
             dimlist_ptr = dimlist_ptr-&gt;next;
@@ -394,19 +396,19 @@
             fortprintf(fd, &quot;))</font>
<font color="red">&quot;);
 
             if (var_ptr2-&gt;iostreams &amp; INPUT0) 
-               fortprintf(fd, &quot;      g %% %s %% ioinfo %% input = .true.</font>
<font color="blue">&quot;, var_ptr2-&gt;name_in_code);
+               fortprintf(fd, &quot;      g %% %s %% ioinfo %% input = .true.</font>
<font color="red">&quot;, var_ptr2-&gt;super_array);
             else
-               fortprintf(fd, &quot;      g %% %s %% ioinfo %% input = .false.</font>
<font color="blue">&quot;, var_ptr2-&gt;name_in_code);
+               fortprintf(fd, &quot;      g %% %s %% ioinfo %% input = .false.</font>
<font color="red">&quot;, var_ptr2-&gt;super_array);
 
             if (var_ptr2-&gt;iostreams &amp; RESTART0) 
-               fortprintf(fd, &quot;      g %% %s %% ioinfo %% restart = .true.</font>
<font color="blue">&quot;, var_ptr2-&gt;name_in_code);
+               fortprintf(fd, &quot;      g %% %s %% ioinfo %% restart = .true.</font>
<font color="red">&quot;, var_ptr2-&gt;super_array);
             else
-               fortprintf(fd, &quot;      g %% %s %% ioinfo %% restart = .false.</font>
<font color="blue">&quot;, var_ptr2-&gt;name_in_code);
+               fortprintf(fd, &quot;      g %% %s %% ioinfo %% restart = .false.</font>
<font color="red">&quot;, var_ptr2-&gt;super_array);
 
             if (var_ptr2-&gt;iostreams &amp; OUTPUT0) 
-               fortprintf(fd, &quot;      g %% %s %% ioinfo %% output = .true.</font>
<font color="blue">&quot;, var_ptr2-&gt;name_in_code);
+               fortprintf(fd, &quot;      g %% %s %% ioinfo %% output = .true.</font>
<font color="red">&quot;, var_ptr2-&gt;super_array);
             else
-               fortprintf(fd, &quot;      g %% %s %% ioinfo %% output = .false.</font>
<font color="blue">&quot;, var_ptr2-&gt;name_in_code);
+               fortprintf(fd, &quot;      g %% %s %% ioinfo %% output = .false.</font>
<font color="black">&quot;, var_ptr2-&gt;super_array);
             fortprintf(fd, &quot;</font>
<font color="gray">&quot;);
          }
          else {
@@ -920,7 +922,7 @@
             if (var_ptr-&gt;timedim) 
                fortprintf(fd, &quot;                                %s%id %% array, super_%s%id, &amp;</font>
<font color="red">&quot;, vtype, var_ptr-&gt;ndims, vtype, var_ptr-&gt;ndims);
             else
-               fortprintf(fd, &quot;                                %s%id %% array, block %% mesh %% %s %% array, &amp;</font>
<font color="blue">&quot;, vtype, var_ptr-&gt;ndims, var_ptr-&gt;name_in_code);
+               fortprintf(fd, &quot;                                %s%id %% array, super_%s%id, &amp;</font>
<font color="black">&quot;, vtype, var_ptr-&gt;ndims, vtype, var_ptr-&gt;ndims);
          }
          else {
             if (var_ptr-&gt;timedim) 

</font>
</pre>