]> ocean-lang.org Git - ocean/blobdiff - csrc/oceani.mdc
oceani: don't try to print a 'then' clause for a switch.
[ocean] / csrc / oceani.mdc
index a202481de1941bd64812ccaeb73abb501af8d5ef..47d5f8a30a1aaffbca3a72240ed907f2c44e6f26 100644 (file)
@@ -400,8 +400,9 @@ when no longer needed.
                case Vnone:
                        return 0;
                case Vstr:
-                       vl->str.txt = arg;
                        vl->str.len = strlen(arg);
+                       vl->str.txt = malloc(vl->str.len);
+                       memcpy(vl->str.txt, arg, vl->str.len);
                        break;
                case Vnum:
                        tx.txt = arg; tx.len = strlen(tx.txt);
@@ -1813,13 +1814,18 @@ defined.
                            cast(binode, cs->condpart)->op == Block) {
                                printf(":\n");
                                print_exec(cs->condpart, indent+1, bracket);
-                               do_indent(indent, "then:\n");
-                               print_exec(cs->thenpart, indent+1, bracket);
+                               if (cs->thenpart) {
+                                       do_indent(indent, "then:\n");
+                                       print_exec(cs->thenpart, indent+1, bracket);
+                               }
                        } else {
                                printf(" ");
                                print_exec(cs->condpart, 0, bracket);
-                               printf(":\n");
-                               print_exec(cs->thenpart, indent+1, bracket);
+                               if (cs->thenpart) {
+                                       printf(":\n");
+                                       print_exec(cs->thenpart, indent+1, bracket);
+                               } else
+                                       printf("\n");
                        }
                }
                for (cp = cs->casepart; cp; cp = cp->next) {