Fix the inconsistent return types for Dict.{get, getAsync}
				
					
				
			Having these methods fallback to returning `null` in only *one* particular case seems outright wrong, since a "falsy" value will thus be handled incorrectly. The only reason that this hasn't caused issues in practice is that there's only one call-site passing in three keys, and in that case we're trying to read a font file where falling back to `null` isn't a problem.
This commit is contained in:
		
							parent
							
								
									9596d702a9
								
							
						
					
					
						commit
						7f18c57c12
					
				@ -92,7 +92,7 @@ var Dict = (function DictClosure() {
 | 
				
			|||||||
          key2 in this._map || typeof key3 === 'undefined') {
 | 
					          key2 in this._map || typeof key3 === 'undefined') {
 | 
				
			||||||
        return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
 | 
					        return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      value = this._map[key3] || null;
 | 
					      value = this._map[key3];
 | 
				
			||||||
      return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
 | 
					      return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -114,7 +114,7 @@ var Dict = (function DictClosure() {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        return Promise.resolve(value);
 | 
					        return Promise.resolve(value);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      value = this._map[key3] || null;
 | 
					      value = this._map[key3];
 | 
				
			||||||
      if (xref) {
 | 
					      if (xref) {
 | 
				
			||||||
        return xref.fetchIfRefAsync(value, suppressEncryption);
 | 
					        return xref.fetchIfRefAsync(value, suppressEncryption);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -67,9 +67,7 @@ describe('primitives', function() {
 | 
				
			|||||||
      expect(dict.get()).toBeUndefined();
 | 
					      expect(dict.get()).toBeUndefined();
 | 
				
			||||||
      expect(dict.get('Prev')).toBeUndefined();
 | 
					      expect(dict.get('Prev')).toBeUndefined();
 | 
				
			||||||
      expect(dict.get('Decode', 'D')).toBeUndefined();
 | 
					      expect(dict.get('Decode', 'D')).toBeUndefined();
 | 
				
			||||||
 | 
					      expect(dict.get('FontFile', 'FontFile2', 'FontFile3')).toBeUndefined();
 | 
				
			||||||
      // Note that the getter with three arguments breaks the pattern here.
 | 
					 | 
				
			||||||
      expect(dict.get('FontFile', 'FontFile2', 'FontFile3')).toBeNull();
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var emptyDict, dictWithSizeKey, dictWithManyKeys;
 | 
					    var emptyDict, dictWithSizeKey, dictWithManyKeys;
 | 
				
			||||||
@ -145,7 +143,7 @@ describe('primitives', function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      Promise.all(keyPromises).then(function (values) {
 | 
					      Promise.all(keyPromises).then(function (values) {
 | 
				
			||||||
        expect(values[0]).toBeUndefined();
 | 
					        expect(values[0]).toBeUndefined();
 | 
				
			||||||
        expect(values[1]).toBeNull();
 | 
					        expect(values[1]).toBeUndefined();
 | 
				
			||||||
        done();
 | 
					        done();
 | 
				
			||||||
      }).catch(function (reason) {
 | 
					      }).catch(function (reason) {
 | 
				
			||||||
        done.fail(reason);
 | 
					        done.fail(reason);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user