Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2004-12-22 22:19:39 +0300
committerTon Roosendaal <ton@blender.org>2004-12-22 22:19:39 +0300
commitc58ef8fa8fc0fd9eb9eee023cbaa8b21ab5530b9 (patch)
treef7bf47026892af333a831b9de0aec27a1b62e900
parentaf02201fd0a6253de2cf6533a5cb9625cbe5a639 (diff)
Last minute fix #1
Dxf reader had 2 crucial erros; - didnt read files correct with \r\n enters (\n and \r go fine) - polyline triangles were added as quads with identical first and last vertex, going terrible wrong on mesh import of 3DS files.
-rw-r--r--source/blender/blenkernel/intern/exotic.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c
index 4bd5fb2acc2..2410255c6af 100644
--- a/source/blender/blenkernel/intern/exotic.c
+++ b/source/blender/blenkernel/intern/exotic.c
@@ -3550,7 +3550,13 @@ static void myfgets(char *str, int len, FILE *fp)
*str= c;
str++;
len--;
- if(c == '\n' || c=='\r') break;
+ /* three types of enters, \n \r and \r\n */
+ if(c == '\n') break;
+ if(c=='\r') {
+ c= getc(dxf_fp); // read the linefeed from stream
+ if(c != 10) ungetc(c, dxf_fp); // put back, if it's not one...
+ break;
+ }
}
}
@@ -4505,16 +4511,15 @@ static void dxf_read_polyline(int noob) {
mface->v2= vids[1]-1;
mface->v3= vids[2]-1;
- if(vids[3])
+ if(vids[3] && vids[3]!=vids[0]) {
mface->v4= vids[3]-1;
+ test_index_mface(mface, 4);
+ }
+ else test_index_mface(mface, 3);
mface->edcode= 3;
mface->mat_nr= 0;
- if(vids[3])
- test_index_mface(mface, 4);
- else
- test_index_mface(mface, 3);
} else {
error("Error parsing dxf, unknown polyline information near %d", dxf_line);
@@ -4850,7 +4855,7 @@ static void dxf_read_3dface(int noob)
mface->mat_nr= 0;
test_index_mface(mface, nverts);
-
+mface->v4= 0;
hasbumped=1;
}