summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-tree.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/ui-tree.c b/ui-tree.c
index 2f052c7..5a2dd3f 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -64,30 +64,32 @@ static void print_object(const unsigned char *sha1, char *path)
static int ls_item(const unsigned char *sha1, const char *base, int baselen,
const char *pathname, unsigned int mode, int stage)
{
char *name;
char *fullpath;
enum object_type type;
unsigned long size = 0;
name = xstrdup(pathname);
fullpath = fmt("%s%s%s", ctx.qry.path ? ctx.qry.path : "",
ctx.qry.path ? "/" : "", name);
- type = sha1_object_info(sha1, &size);
- if (type == OBJ_BAD && !S_ISGITLINK(mode)) {
- htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>",
- name,
- sha1_to_hex(sha1));
- return 0;
+ if (!S_ISGITLINK(mode)) {
+ type = sha1_object_info(sha1, &size);
+ if (type == OBJ_BAD) {
+ htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>",
+ name,
+ sha1_to_hex(sha1));
+ return 0;
+ }
}
html("<tr><td class='ls-mode'>");
cgit_print_filemode(mode);
html("</td><td>");
if (S_ISGITLINK(mode)) {
htmlf("<a class='ls-mod' href='");
html_attr(fmt(ctx.repo->module_link,
name,
sha1_to_hex(sha1)));
html("'>");
html_txt(name);