File tree Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -64,7 +64,13 @@ export function wrap(
6464 // the original wrapper.
6565 const wrapper = fn . __sentry_wrapped__ ;
6666 if ( wrapper ) {
67- return wrapper ;
67+ if ( typeof wrapper === 'function' ) {
68+ return wrapper ;
69+ } else {
70+ // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means
71+ // that something messed with it. In that case we want to return the originally passed function.
72+ return fn ;
73+ }
6874 }
6975
7076 // We don't wanna wrap it twice
Original file line number Diff line number Diff line change @@ -174,4 +174,17 @@ describe('internal wrap()', () => {
174174 expect ( wrapped . __sentry_original__ ) . toBe ( fn ) ;
175175 expect ( fn . __sentry_wrapped__ ) . toBe ( wrapped ) ;
176176 } ) ;
177+
178+ it ( 'should only return __sentry_wrapped__ when it is a function' , ( ) => {
179+ const fn = ( ( ) => 1337 ) as WrappedFunction ;
180+
181+ wrap ( fn ) ;
182+ expect ( fn ) . toHaveProperty ( '__sentry_wrapped__' ) ;
183+ fn . __sentry_wrapped__ = 'something that is not a function' as any ;
184+
185+ const wrapped = wrap ( fn ) ;
186+
187+ expect ( wrapped ) . toBe ( fn ) ;
188+ expect ( wrapped ) . not . toBe ( 'something that is not a function' ) ;
189+ } ) ;
177190} ) ;
You can’t perform that action at this time.
0 commit comments