Fix [Issue-13], problems with multiple injected params for @JsonCreator ctor

diff --git a/release-notes/CREDITS b/release-notes/CREDITS
index 93ba7ac..4d75247 100644
--- a/release-notes/CREDITS
+++ b/release-notes/CREDITS
@@ -903,3 +903,9 @@
 Jan Jan:   
   * Reported [JACKSON-832] (partial) Fix numeric range check for Longs (was not working)
    [1.9.7]
+
+Stuart Dootson:
+  * Reported [Issue-13] Runtime error passing multiple injected values to a constructor
+   [1.9.7]
+   
+   
\ No newline at end of file
diff --git a/release-notes/VERSION b/release-notes/VERSION
index fcf0dea..da0ee8c 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -13,6 +13,8 @@
    (reported by Steven S)
   * [Issue-11] JsonParser.getValueAsLong() returning int, not long
    (reported by Daniel L)
+  * [Issue-13] Runtime error passing multiple injected values to a constructor
+   (reported by Stuart D)
   * [Issue-14]: Annotations were not included from parent classes of
     mix-in classes
    (reported by @guillaup)
diff --git a/src/mapper/java/org/codehaus/jackson/map/deser/impl/CreatorCollector.java b/src/mapper/java/org/codehaus/jackson/map/deser/impl/CreatorCollector.java
index eb0629c..8252d79 100644
--- a/src/mapper/java/org/codehaus/jackson/map/deser/impl/CreatorCollector.java
+++ b/src/mapper/java/org/codehaus/jackson/map/deser/impl/CreatorCollector.java
@@ -109,6 +109,12 @@
             HashMap<String,Integer> names = new HashMap<String,Integer>();
             for (int i = 0, len = properties.length; i < len; ++i) {
                 String name = properties[i].getName();
+                /* [Issue-13]: Need to consider Injectables, which may not have
+                 *   a name at all, and need to be skipped
+                 */
+                if (name.length() == 0 && properties[i].getInjectableValueId() != null) {
+                    continue;
+                }
                 Integer old = names.put(name, Integer.valueOf(i));
                 if (old != null) {
                     throw new IllegalArgumentException("Duplicate creator property \""+name+"\" (index "+old+" vs "+i+")");
diff --git a/src/mapper/java/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java b/src/mapper/java/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java
index fbf59cb..63708e7 100644
--- a/src/mapper/java/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java
+++ b/src/mapper/java/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java
@@ -31,6 +31,12 @@
     protected final HashMap<String, SettableBeanProperty> _properties;
 
     /**
+     * Number of properties: usually same as size of {@link #_properties},
+     * but not necessarily, when we have unnamed injectable properties.
+     */
+    protected final int _propertyCount;
+
+    /**
      * If some property values must always have a non-null value (like
      * primitive types do), this array contains such default values.
      */
@@ -52,7 +58,9 @@
         Object[] defValues = null;
         SettableBeanProperty[] creatorProps = valueInstantiator.getFromObjectArguments();
         SettableBeanProperty[] propertiesWithInjectables = null;
-        for (int i = 0, len = creatorProps.length; i < len; ++i) {
+        final int len = creatorProps.length;
+        _propertyCount = len;
+        for (int i = 0; i < len; ++i) {
             SettableBeanProperty prop = creatorProps[i];
             _properties.put(prop.getName(), prop);
             if (prop.getType().isPrimitive()) {
@@ -98,7 +106,7 @@
      */
     public PropertyValueBuffer startBuilding(JsonParser jp, DeserializationContext ctxt)
     {
-        PropertyValueBuffer buffer = new PropertyValueBuffer(jp, ctxt, _properties.size());
+        PropertyValueBuffer buffer = new PropertyValueBuffer(jp, ctxt, _propertyCount);
         if (_propertiesWithInjectables != null) {
             buffer.inject(_propertiesWithInjectables);
         }
diff --git a/src/test/org/codehaus/jackson/map/deser/TestInjectables.java b/src/test/org/codehaus/jackson/map/deser/TestInjectables.java
index 58ce99a..76963cd 100644
--- a/src/test/org/codehaus/jackson/map/deser/TestInjectables.java
+++ b/src/test/org/codehaus/jackson/map/deser/TestInjectables.java
@@ -45,7 +45,18 @@
             age = a;
         }
     }
-    
+
+    static class CtorBean2 {
+        protected String name;
+        protected Integer age;
+        
+        public CtorBean2(@JacksonInject String n, @JacksonInject("number") Integer a)
+        {
+            name = n;
+            age = a;
+        }
+    }
+
     /*
     /**********************************************************
     /* Unit tests
@@ -77,6 +88,19 @@
         assertEquals(55, bean.age);
         assertEquals("Bubba", bean.name);
     }
+
+    // [Issue-13]
+    public void testTwoInjectablesViaCreator() throws Exception
+    {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.setInjectableValues(new InjectableValues.Std()
+            .addValue(String.class, "Bob")
+            .addValue("number", Integer.valueOf(13))
+            );
+        CtorBean2 bean = mapper.readValue("{ }", CtorBean2.class);
+        assertEquals(Integer.valueOf(13), bean.age);
+        assertEquals("Bob", bean.name);
+    }
     
     public void testInvalidDup() throws Exception
     {