From 8c4b37178c8e7cfcbb37682180c697cb6e55cb34 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 19 Apr 2025 22:24:40 +0200 Subject: libdiskfs: Fix catching exceptions This fixes making diskfs_catch_exception recursive, catching the last fault exception, and fixes callers. --- fatfs/pager.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'fatfs/pager.c') diff --git a/fatfs/pager.c b/fatfs/pager.c index efe02038..e2302cec 100644 --- a/fatfs/pager.c +++ b/fatfs/pager.c @@ -646,12 +646,15 @@ diskfs_grow (struct node *node, loff_t size, struct protid *cred) if (new_end_cluster > end_cluster) { err = diskfs_catch_exception (); - while (!err && end_cluster < new_end_cluster) + if (! err) { - cluster_t disk_cluster; - err = fat_getcluster (node, end_cluster++, 1, &disk_cluster); + while (!err && end_cluster < new_end_cluster) + { + cluster_t disk_cluster; + err = fat_getcluster (node, end_cluster++, 1, &disk_cluster); + } + diskfs_end_catch_exception (); } - diskfs_end_catch_exception (); if (err) /* Reflect how much we allocated successfully. */ -- cgit v1.2.3