diff --git a/src/ngSanitize/filter/linky.js b/src/ngSanitize/filter/linky.js
index 2780d74c0b33..e0dfb0e3c43b 100644
--- a/src/ngSanitize/filter/linky.js
+++ b/src/ngSanitize/filter/linky.js
@@ -133,9 +133,10 @@ angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
var LINKY_URL_REGEXP =
/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
MAILTO_REGEXP = /^mailto:/i;
+ var isString = angular.isString;
return function(text, target, attributes) {
- if (!text) return text;
+ if (!text || !isString(text)) return text;
var match;
var raw = text;
var html = [];
diff --git a/test/ngSanitize/filter/linkySpec.js b/test/ngSanitize/filter/linkySpec.js
index a3dafb18ddce..3596f5ff56b0 100644
--- a/test/ngSanitize/filter/linkySpec.js
+++ b/test/ngSanitize/filter/linkySpec.js
@@ -20,6 +20,14 @@ describe('linky', function() {
expect(linky(undefined)).not.toBeDefined();
});
+ it('should return non-string, truthy values unchanged', function() {
+ expect(linky(true)).toBe(true);
+ expect(linky(42)).toBe(42);
+ expect(linky([])).toEqual([]);
+ expect(linky({})).toEqual({});
+ expect(linky(noop)).toBe(noop);
+ });
+
it('should be case-insensitive', function() {
expect(linky('WWW.example.com')).toEqual('WWW.example.com');
expect(linky('WWW.EXAMPLE.COM')).toEqual('WWW.EXAMPLE.COM');