summaryrefslogtreecommitdiff
path: root/src/read.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/read.c')
-rw-r--r--src/read.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/read.c b/src/read.c
index 3909fc64..4e8432a0 100644
--- a/src/read.c
+++ b/src/read.c
@@ -621,6 +621,7 @@ eval (struct ebuffer *ebuf, int set_default)
size_t wlen;
char *p;
char *p2;
+ unsigned int is_rule;
struct vmodifiers vmod;
/* At the top of this loop, we are starting a brand new line. */
@@ -760,6 +761,8 @@ eval (struct ebuffer *ebuf, int set_default)
wlen = p2 - p;
NEXT_TOKEN (p2);
+ is_rule = *p2 == ':' || ((*p2 == '&' || *p2 == '|') && p2[1] == ':');
+
/* If we're in an ignored define, skip this line (but maybe get out). */
if (in_ignored_define)
{
@@ -910,8 +913,8 @@ eval (struct ebuffer *ebuf, int set_default)
continue;
}
- /* Handle the load operations. */
- if (word1eq ("load") || word1eq ("-load"))
+ /* Handle the load operations. Allow targets named "load". */
+ if ((word1eq ("load") || word1eq ("-load")) && !is_rule)
{
/* A 'load' line specifies a dynamic object to load. */
struct nameseq *files;