From 17a066c18e6d855895bb4604988d5ed40a423dc8 Mon Sep 17 00:00:00 2001
From: Roeland Jago Douma <rullzer@owncloud.com>
Date: Tue, 27 Oct 2015 10:22:59 +0100
Subject: [PATCH] Properly close db cursors

---
 apps/files_sharing/tests/sharedmount.php | 2 +-
 lib/private/share/share.php              | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/apps/files_sharing/tests/sharedmount.php b/apps/files_sharing/tests/sharedmount.php
index 21c98625e60..15ebc7caf71 100644
--- a/apps/files_sharing/tests/sharedmount.php
+++ b/apps/files_sharing/tests/sharedmount.php
@@ -277,7 +277,7 @@ class Test_Files_Sharing_Mount extends OCA\Files_sharing\Tests\TestCase {
 			\OCP\Constants::PERMISSION_UPDATE,
 			\OCP\Constants::PERMISSION_CREATE,
 			\OCP\Constants::PERMISSION_SHARE,
-			\OCP\Constants::PERMISSION_DELETE
+			\OCP\Constants::PERMISSION_DELETE,
 		];
 
 		$allPermissions = $powerset($permissions);
diff --git a/lib/private/share/share.php b/lib/private/share/share.php
index f02b2e9c770..63639461f0a 100644
--- a/lib/private/share/share.php
+++ b/lib/private/share/share.php
@@ -1123,9 +1123,10 @@ class Share extends Constants {
 					->from('share')
 					->where($qb->expr()->eq('id', $qb->createParameter('id')))
 					->setParameter(':id', $rootItem['parent']);
-				$result = $qb->execute();
+				$dbresult = $qb->execute();
 
-				$result = $result->fetch();
+				$result = $dbresult->fetch();
+				$dbresult->closeCursor();
 				if (~(int)$result['permissions'] & $permissions) {
 					$message = 'Setting permissions for %s failed,'
 						.' because the permissions exceed permissions granted to %s';
@@ -1189,6 +1190,7 @@ class Share extends Constants {
 							$parents[] = $item['id'];
 						}
 					}
+					$result->closeCursor();
 				}
 
 				// Remove the permissions for all reshares of this item
@@ -1209,7 +1211,7 @@ class Share extends Constants {
 
 			/*
 			 * Permissions were added
-			 * Update all USERGROUP shares. (So group shares where the user moved his mountpoint).
+			 * Update all USERGROUP shares. (So group shares where the user moved their mountpoint).
 			 */
 			if ($permissions & ~(int)$rootItem['permissions']) {
 				$qb = $connection->getQueryBuilder();
@@ -1229,6 +1231,7 @@ class Share extends Constants {
 					$items[] = $item;
 					$ids[] = $item['id'];
 				}
+				$result->closeCursor();
 
 				// Add permssions for all USERGROUP shares of this item
 				if (!empty($ids)) {
-- 
GitLab