diff --git a/runtime/bin/builtin.dart b/runtime/bin/builtin.dart
index 51e6dce..99e80ca 100644
--- a/runtime/bin/builtin.dart
+++ b/runtime/bin/builtin.dart
@@ -216,14 +216,18 @@
     // Relative URIs with scheme dart-ext should be resolved as if with no
     // scheme.
     resolved = baseUri.resolve(uri.path);
-    var path = resolved.path;
     if (resolved.scheme == 'package') {
       // If we are resolving relative to a package URI we go directly to the
       // file path and keep the dart-ext scheme. Otherwise, we will lose the
       // package URI path part.
-      path = _filePathFromPackageUri(resolved);
+      var path = _filePathFromPackageUri(resolved);
+      if (path.startsWith('http:')) {
+        throw "Native extensions not supported in "
+            "packages loaded over http: %path";
+      }
+      resolved = new Uri.file(path);
     }
-    resolved = new Uri(scheme: 'dart-ext', path: path);
+    resolved = new Uri(scheme: 'dart-ext', path: resolved.path);
   } else {
     resolved = baseUri.resolve(userString);
   }
@@ -244,7 +248,9 @@
       return uri.toFilePath();
       break;
     case 'dart-ext':
-      return new Uri(scheme: 'file',
+      // Relative file URIs don't start with file:///.
+      var scheme = (uri.path.startsWith('/') ? 'file' : '');
+      return new Uri(scheme: scheme,
                      host: uri.host,
                      path: uri.path).toFilePath();
       break;
diff --git a/runtime/vm/gc_marker.cc b/runtime/vm/gc_marker.cc
index 4a9eabd..074619d 100644
--- a/runtime/vm/gc_marker.cc
+++ b/runtime/vm/gc_marker.cc
@@ -6,6 +6,7 @@
 
 #include <map>
 #include <utility>
+#include <vector>
 
 #include "vm/allocation.h"
 #include "vm/dart_api_state.h"
@@ -192,10 +193,14 @@
       std::pair<DelaySet::iterator, DelaySet::iterator> ret;
       // Visit all elements with a key equal to raw_obj.
       ret = delay_set_.equal_range(raw_obj);
-      for (DelaySet::iterator it = ret.first; it != ret.second; ++it) {
+      // Create a copy of the range in a temporary vector to iterate over it
+      // while delay_set_ may be modified.
+      std::vector<DelaySetEntry> temp_copy(ret.first, ret.second);
+      delay_set_.erase(ret.first, ret.second);
+      for (std::vector<DelaySetEntry>::iterator it = temp_copy.begin();
+           it != temp_copy.end(); ++it) {
         it->second->VisitPointers(this);
       }
-      delay_set_.erase(ret.first, ret.second);
       raw_obj->ClearWatchedBit();
     }
     marking_stack_->Push(raw_obj);
@@ -261,6 +266,7 @@
   MarkingStack* marking_stack_;
   RawObject* visiting_old_object_;
   typedef std::multimap<RawObject*, RawWeakProperty*> DelaySet;
+  typedef std::pair<RawObject*, RawWeakProperty*> DelaySetEntry;
   DelaySet delay_set_;
   const bool visit_function_code_;
   GrowableArray<RawFunction*> skipped_code_functions_;
diff --git a/sdk/lib/core/uri.dart b/sdk/lib/core/uri.dart
index d2e2a7a..41130ad 100644
--- a/sdk/lib/core/uri.dart
+++ b/sdk/lib/core/uri.dart
@@ -390,9 +390,9 @@
     segments.skip(firstSegment).forEach((segment) {
       if (segment.contains(new RegExp(r'["*/:<>?\\|]'))) {
         if (argumentError) {
-          throw new ArgumentError("Illegal character in path}");
+          throw new ArgumentError("Illegal character in path");
         } else {
-          throw new UnsupportedError("Illegal character in path}");
+          throw new UnsupportedError("Illegal character in path");
         }
       }
     });
diff --git a/tools/VERSION b/tools/VERSION
index d0a7398..0e21058 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -26,6 +26,6 @@
 CHANNEL stable
 MAJOR 1
 MINOR 1
-PATCH 2
+PATCH 3
 PRERELEASE 0
 PRERELEASE_PATCH 0
