shithub: mc

Download patch

ref: 9c1dd3355d31004cc2875f1ed055372e9b8b6d50
parent: a2c579cf237bd9b76acda6862a5c52976bbbc66c
author: Ori Bernstein <[email protected]>
date: Fri Apr 5 16:41:24 EDT 2013

Don't double-name types in usefiles.

--- a/parse/use.c
+++ b/parse/use.c
@@ -40,7 +40,6 @@
     Stab *s;
     Node *dcl;
     Type *t;
-    Node *n;
     int c;
 
     if (fgetc(f) != 'U')
@@ -70,9 +69,9 @@
                 putdcl(s, dcl);
                 break;
             case 'T':
-                n = mkname(-1, rdstr(f));
                 t = tyunpickle(f);
-                puttype(s, n, t);
+                assert(t->type == Tyname || t->type == Tygeneric);
+                puttype(s, t->name, t);
                 break;
             case EOF:
                 break;
@@ -113,7 +112,7 @@
 
 /* Usefile format:
  * U<pkgname>
- * T<typename><pickled-type>
+ * T<pickled-type>
  * D<picled-decl>
  * G<pickled-decl><pickled-initializer>
  * Z
@@ -136,8 +135,8 @@
     k = htkeys(st->ty, &n);
     for (i = 0; i < n; i++) {
         t = gettype(st, k[i]);
+        assert(t->type == Tyname || t->type == Tygeneric);
         wrbyte(f, 'T');
-        wrstr(f, namestr(k[i]));
         typickle(t, f);
     }
     free(k);