Changeset 10040 for OpenSceneGraph/trunk/src/osgPlugins/ply/plyfile.cpp
- Timestamp:
- 04/13/09 11:35:52 (4 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/src/osgPlugins/ply/plyfile.cpp
r10014 r10040 40 40 41 41 #include "ply.h" 42 #include"typedefs.h" 43 42 44 #include <stdio.h> 43 45 #include <stdlib.h> 44 46 #include <math.h> 45 47 #include <string.h> 48 49 46 50 47 51 #ifdef WIN32 … … 316 320 317 321 plyfile = ply_write (fp, nelems, elem_names, file_type); 322 323 // If the plyfile could not load return NULL 318 324 if (plyfile == NULL) 319 325 return (NULL); … … 354 360 elem = find_element (plyfile, elem_name); 355 361 if (elem == NULL) { 356 fprintf(stderr,"ply_describe_element: can't find element '%s'\n",elem_name); 357 exit (-1); 362 char error[100]; 363 sprintf (error, "ply_describe_element: can't find element '%s'\n",elem_name); 364 throw ply::MeshException( error ); 358 365 } 359 366 … … 501 508 elem = find_element (plyfile, elem_name); 502 509 if (elem == NULL) { 503 fprintf(stderr,"ply_element_count: can't find element '%s'\n",elem_name); 504 exit (-1); 510 char error[100]; 511 sprintf (error, "ply_element_count: can't find element '%s'\n",elem_name); 512 throw ply::MeshException( error ); 505 513 } 506 514 … … 537 545 break; 538 546 default: 539 fprintf (stderr, "ply_header_complete: bad file type = %d\n", 547 char error[100]; 548 sprintf (error, "ply_header_complete: bad file type = %d\n", 540 549 plyfile->file_type); 541 exit (-1);550 throw ply::MeshException( error ); 542 551 } 543 552 … … 596 605 elem = find_element (plyfile, elem_name); 597 606 if (elem == NULL) { 598 fprintf(stderr, "ply_elements_setup: can't find element '%s'\n", elem_name); 599 exit (-1); 607 char error[100]; 608 sprintf (error, "ply_elements_setup: can't find element '%s'\n", elem_name); 609 throw ply::MeshException( error ); 600 610 } 601 611 … … 941 951 plyfile = ply_read (fp, nelems, elem_names); 942 952 953 if(!plyfile) 954 { 955 std::cout<<"Ply File Error : Could not read file"<<std::endl; 956 return NULL; 957 } 958 943 959 /* determine the file type and version */ 944 960 … … 1331 1347 elem = find_element (plyfile, elem_name); 1332 1348 if (elem == NULL) { 1333 fprintf (stderr,1334 "ply_get_other_element: can't find element '%s'\n", elem_name);1335 exit (-1);1349 char error[100]; 1350 sprintf (error, "ply_get_other_element: can't find element '%s'\n", elem_name); 1351 throw ply::MeshException( error ); 1336 1352 } 1337 1353 … … 1651 1667 words = get_words (plyfile->fp, &nwords, &orig_line); 1652 1668 if (words == NULL) { 1653 fprintf (stderr, "ply_get_element: unexpected end of file\n"); 1654 exit (-1); 1669 char error[100]; 1670 sprintf (error, "ply_get_element: unexpected end of file\n"); 1671 throw ply::MeshException( error ); 1655 1672 } 1656 1673 … … 1848 1865 1849 1866 if (code <= PLY_START_TYPE || code >= PLY_END_TYPE) { 1850 fprintf (stderr, "write_scalar_type: bad data code = %d\n", code); 1851 exit (-1); 1867 char error[100]; 1868 sprintf (error, "write_scalar_type: bad data code = %d\n", code); 1869 throw ply::MeshException( error ); 1852 1870 } 1853 1871 … … 2119 2137 break; 2120 2138 default: 2121 fprintf (stderr, "write_binary_item: bad type = %d\n", type); 2122 exit (-1); 2139 char error[100]; 2140 sprintf (error, "write_binary_item: bad type = %d\n", type); 2141 throw ply::MeshException( error ); 2123 2142 } 2124 2143 } … … 2163 2182 break; 2164 2183 default: 2165 fprintf (stderr, "write_ascii_item: bad type = %d\n", type); 2166 exit (-1); 2184 char error[100]; 2185 sprintf (error, "write_ascii_item: bad type = %d\n", type); 2186 throw ply::MeshException( error ); 2167 2187 } 2168 2188 } … … 2235 2255 break; 2236 2256 default: 2237 fprintf (stderr, "get_stored_item: bad type = %d\n", type); 2238 exit (-1); 2257 char error[100]; 2258 sprintf (error, "get_stored_item: bad type = %d\n", type); 2259 throw ply::MeshException( error ); 2239 2260 } 2240 2261 } … … 2267 2288 2268 2289 ptr = (void *) c; 2290 size_t result = 0; 2269 2291 2270 2292 switch (type) { 2271 2293 case PLY_CHAR: 2272 fread (ptr, 1, 1, plyfile->fp); 2294 result = fread (ptr, 1, 1, plyfile->fp); 2295 if(result < 1) 2296 { 2297 throw ply::MeshException( "Error in reading PLY file." 2298 "fread not succeeded." ); 2299 } 2273 2300 *int_val = *((char *) ptr); 2274 2301 *uint_val = *int_val; … … 2277 2304 case PLY_UCHAR: 2278 2305 case PLY_UINT8: 2279 fread (ptr, 1, 1, plyfile->fp); 2306 result = fread (ptr, 1, 1, plyfile->fp); 2307 if(result < 1) 2308 { 2309 throw ply::MeshException( "Error in reading PLY file." 2310 "fread not succeeded." ); 2311 } 2280 2312 *uint_val = *((unsigned char *) ptr); 2281 2313 *int_val = *uint_val; … … 2283 2315 break; 2284 2316 case PLY_SHORT: 2285 fread (ptr, 2, 1, plyfile->fp); 2317 result = fread (ptr, 2, 1, plyfile->fp); 2318 if(result < 1 ) 2319 { 2320 throw ply::MeshException( "Error in reading PLY file." 2321 "fread not succeeded." ); 2322 } 2286 2323 if( plyfile->file_type == PLY_BINARY_BE ) 2287 2324 { … … 2297 2334 break; 2298 2335 case PLY_USHORT: 2299 fread (ptr, 2, 1, plyfile->fp); 2336 result = fread (ptr, 2, 1, plyfile->fp); 2337 if(result < 1) 2338 { 2339 throw ply::MeshException( "Error in reading PLY file." 2340 "fread not succeeded." ); 2341 } 2300 2342 if( plyfile->file_type == PLY_BINARY_BE ) 2301 2343 { … … 2312 2354 case PLY_INT: 2313 2355 case PLY_INT32: 2314 fread (ptr, 4, 1, plyfile->fp); 2356 result = fread (ptr, 4, 1, plyfile->fp); 2357 if(result < 1) 2358 { 2359 throw ply::MeshException( "Error in reading PLY file." 2360 "fread not succeeded." ); 2361 } 2315 2362 if( plyfile->file_type == PLY_BINARY_BE ) 2316 2363 { … … 2326 2373 break; 2327 2374 case PLY_UINT: 2328 fread (ptr, 4, 1, plyfile->fp); 2375 result = fread (ptr, 4, 1, plyfile->fp); 2376 if(result < 1) 2377 { 2378 throw ply::MeshException( "Error in reading PLY file." 2379 "fread not succeeded." ); 2380 } 2329 2381 if( plyfile->file_type == PLY_BINARY_BE ) 2330 2382 { … … 2341 2393 case PLY_FLOAT: 2342 2394 case PLY_FLOAT32: 2343 fread (ptr, 4, 1, plyfile->fp); 2395 result = fread (ptr, 4, 1, plyfile->fp); 2396 if(result < 1) 2397 { 2398 throw ply::MeshException( "Error in reading PLY file." 2399 "fread not succeeded." ); 2400 } 2344 2401 if( plyfile->file_type == PLY_BINARY_BE ) 2345 2402 { … … 2355 2412 break; 2356 2413 case PLY_DOUBLE: 2357 fread (ptr, 8, 1, plyfile->fp); 2414 result = fread (ptr, 8, 1, plyfile->fp); 2415 if(!result < 1) 2416 { 2417 throw ply::MeshException( "Error in reading PLY file." 2418 "fread not succeeded." ); 2419 } 2358 2420 if( plyfile->file_type == PLY_BINARY_BE ) 2359 2421 { … … 2369 2431 break; 2370 2432 default: 2371 fprintf (stderr, "get_binary_item: bad type = %d\n", type); 2372 exit (-1); 2433 char error[100]; 2434 sprintf (error, "get_binary_item: bad type = %d\n", type); 2435 throw ply::MeshException( error ); 2373 2436 } 2374 2437 } … … 2425 2488 2426 2489 default: 2427 fprintf (stderr, "get_ascii_item: bad type = %d\n", type); 2428 exit (-1); 2490 char error[100]; 2491 sprintf (error, "get_ascii_item: bad type = %d\n", type); 2492 throw ply::MeshException( error ); 2429 2493 } 2430 2494 } … … 2497 2561 break; 2498 2562 default: 2499 fprintf (stderr, "store_item: bad type = %d\n", type); 2500 exit (-1); 2563 char error[100]; 2564 sprintf (error, "store_item: bad type = %d\n", type); 2565 throw ply::MeshException( error ); 2501 2566 } 2502 2567 }
