summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2009-04-25 15:46:00 +0200
committerYorhel <git@yorhel.nl>2009-04-25 15:46:00 +0200
commit027c0c2eba92117dbb2ed6eced80e156c5fa5651 (patch)
tree97b1bc5681ae5bf94236167f14745f188309589d
parent3dc21365f5648ea6c98740314449b6fc69ca422f (diff)
Don't segfault when browsing an empty dir...
-rw-r--r--src/browser.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/browser.c b/src/browser.c
index fd323cf..f3941c7 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -310,7 +310,8 @@ void browse_key_sel(int change) {
struct dir *n, *cur, par;
int i, max;
- cur = browse_dir;
+ if((cur = browse_dir) == NULL)
+ return;
par.next = cur;
if(cur->parent->parent)
cur = &par;
@@ -402,13 +403,13 @@ int browse_key(int ch) {
break;
if(n != NULL && n->sub != NULL)
browse_dir = n->sub;
- if(n == NULL && browse_dir->parent->parent)
+ if(n == NULL && browse_dir != NULL && browse_dir->parent->parent)
browse_dir = browse_dir->parent->parent->sub;
nonfo++;
sort++;
break;
case KEY_LEFT:
- if(browse_dir->parent->parent != NULL)
+ if(browse_dir != NULL && browse_dir->parent->parent != NULL)
browse_dir = browse_dir->parent->parent->sub;
nonfo++;
sort++;
@@ -416,7 +417,8 @@ int browse_key(int ch) {
/* refresh */
case 'r':
- calc_init(getpath(browse_dir->parent), browse_dir->parent);
+ if(browse_dir != NULL)
+ calc_init(getpath(browse_dir->parent), browse_dir->parent);
nonfo++;
sort++;
break;
@@ -457,7 +459,7 @@ int browse_key(int ch) {
break;
}
- if(sort)
+ if(sort && browse_dir != NULL)
browse_dir = browse_sort(browse_dir);
if(nonfo)
flags &= ~BF_INFO;