- int len = end - p - 2;
- char *fromfile = alloca (len + 1);
- strncpy (fromfile, &p[2], len);
- fromfile[len] = 0;
- if (fromfile[len-1] == 'c')
- fromfile[len-1] = 'o';
-
- skip_file = NILP (Fmember (build_string (fromfile),
- Vbuild_files));
+ skip_file = 0;
+ if (end - p > 4 && end[-2] == '.'
+ && (end[-1] == 'o' || end[-1] == 'c'))
+ {
+ EMACS_INT len = end - p - 2;
+ char *fromfile = alloca (len + 1);
+ strncpy (fromfile, &p[2], len);
+ fromfile[len] = 0;
+ if (fromfile[len-1] == 'c')
+ fromfile[len-1] = 'o';
+
+ skip_file = NILP (Fmember (build_string (fromfile),
+ Vbuild_files));
+ }