diff --git a/README.md b/README.md index ccb13ba..5e7a5ae 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,21 @@ Using getRowCount method of GlideRecord can cause performance issues while queri ### Query business rules should not use query() on GlideRecord Query business rules that query themselves will continue to loop indefinitely until being caught by the platforms recursion limit. This can build up to an excessive response time and possibly cause the transaction to time out or create performance issues. +### Always deregister $rootScope.$on listeners on the scope $destory event +$rootScope.$on listeners will remain in memory if not properly cleaned up. This will create a memory leak if the controller falls out of scope. +```javascript +api.controller = function ($rootScope, $scope) { + /* widget controller */ + var c = this; + + var deregister = $rootScope.$on("someevent", function () {}); + + $scope.$on("$destroy", function destroyScope() { + deregister(); + }); +}; +``` + ## Category: Security ### Tables without ACLs diff --git a/ca8467c41b9abc10ce0f62c3b24bcbaa/checksum.txt b/ca8467c41b9abc10ce0f62c3b24bcbaa/checksum.txt index 49671a9..a777789 100644 --- a/ca8467c41b9abc10ce0f62c3b24bcbaa/checksum.txt +++ b/ca8467c41b9abc10ce0f62c3b24bcbaa/checksum.txt @@ -1 +1 @@ -pAcfdvfkVBvdcNK_HZ6Siz27BK483rysXEEssjGG27O7HfaiuDjvSeRhd0EZeVUudSzZU3oflCzpya9lTPGvDX8xgLV8BWFmL28KpbfEO9wDhxF3vjVDzgTvgZvMxTWLDKnni98ffRF_Fq1G8VDsxnVPHbv_zZSqg_uHdNPqSkKQFMJqID-neTU1JafKdsy5ugT-D7ES8hizMmLyhvApTtXYOArMEjy20glEcvh5TjcIA1u5bCRdoykZ2x79e0zcKCE76z3i7OO2ryCkiYpkIApRPOu3Z_tTcYnzQHssAekDqNtqWnsHt_QBTA9Jcpjlg48GXm47o13_1EiTQeO6XV-gl-ahpZdlBsqBIwMDiLKSveC9m2Un5s8kIz0Jq8tdhiJgiqmyP8MR2yPyYT5NkcB8OCDSn-MyIHI0ROLvKZd88WhN-jU4YGmGMdL2D-QQHnir6CXIW-uXOZ00FF6snv89TqARUGM7DJg3VL1t1uVCa8nmJQ53YKNg9C-3hC4fdZ_uB1ynKFcoAKROPTyCD58PnQHfMjDYG3BqEa-apGBAo3XsU0zI1wdS00Ia4kS1TcV4kozt_SZJZVYIPEpJ262IKgnxuOQQjDN4J6DVitEeBuefiClEGRCbIHzdyUiLvoI8Wv2gQ0a00MRkmi3ReOT1MNSYL3ODnvaNL_gdZho \ No newline at end of file +pAcfdvfkVBvdcNK_HZ6Siz27BK483rysXEEssjGG27O7HfaiuDjvSeRhd0EZeVUudSzZU3oflCzpya9lTPGvDX8xgLV8BWFmL28KpbfEO9wDhxF3vjVDzgTvgZvMxTWLDKnni98ffRF_Fq1G8VDsxnVPHbv_zZSqg_uHdNPqSkKQFMJqID-neTU1JafKdsy5ugT-D7ES8hizMmLyhvApTtXYOArMEjy20glEcvh5TjcIA1u5bCRdoykZ2x79e0zcKCE76z3i7OO2ryCkiYpkIApRPOu3Z_tTcYnzQHssAekDqNtqWnsHt_QBTA9Jcpjlg48GXm47o13_1EiTQeO6XV-gl-ahpZdlBsqBIwMDiLKSveC9m2Un5s8kIz0Jq8tdhiJgiqmyP8MR2yPyYT5NkcB8OCDSn-MyIHI0ROLvKZd88WhN-jU4YGmGMdL2D-QQHnir6CXIW-uXOZ00FF6snv89TqARUGM7DJg3VL1t1uVCa8nmJQ53YKNg9C-3hC4fdZ_uB1ynKFcoAKROPTyCD58PnQHfMjDYG3BqEa-apGBAo3XsU0zI1wdS00Ia4kS1TcV4kozt_SZJZVYIPEpJ262IKgnxuOQQjDN4J6DVitEeBuefiClEGRCbIHzdyUiLvoI8Wv2gQ0a00MRkmi3ReOT1MNSYL3ODnvaNL_gdZho diff --git a/ca8467c41b9abc10ce0f62c3b24bcbaa/update/scan_table_check_f0e1a8581b27705088d943fddc4bcbc3.xml b/ca8467c41b9abc10ce0f62c3b24bcbaa/update/scan_table_check_f0e1a8581b27705088d943fddc4bcbc3.xml new file mode 100644 index 0000000..691409d --- /dev/null +++ b/ca8467c41b9abc10ce0f62c3b24bcbaa/update/scan_table_check_f0e1a8581b27705088d943fddc4bcbc3.xml @@ -0,0 +1,51 @@ + + + true + false + performance + client_scriptLIKE$rootScope.$on^client_scriptNOT LIKE$scope.$on('destroy'^ORclient_scriptNOT LIKE$scope.$on("destroy"^EQ + + + + + $rootScope.$on listeners will remain in memory if not properly cleaned up. This will create a memory leak if the controller falls out of scope. + + scan_finding + $rootScope.$on listener + 1 + api.controller = function ($rootScope, $scope) { + /* widget controller */ + var c = this; + + var deregister = $rootScope.$on("someevent", function () {}); + + $scope.$on("$destroy", function destroyScope() { + deregister(); + }); +}; + + 100 + 0 + 1 + + Always deregister $rootScope.$on listeners on the scope $destory event + scan_table_check + admin + 2021-10-27 20:20:15 + f0e1a8581b27705088d943fddc4bcbc3 + 8 + $rootScope.$on listener + ca8467c41b9abc10ce0f62c3b24bcbaa + + ca8467c41b9abc10ce0f62c3b24bcbaa + scan_table_check_f0e1a8581b27705088d943fddc4bcbc3 + admin + 2021-10-27 21:53:56 + sp_widget
+ false +
+