diff --git a/iseeking_example.c b/iseeking_example.c
index 533d7bd716af29a43bb62c9f631f90bf484b848e..c98676fcac13250f8b59c453a27d9fd22cc30633 100644
--- a/iseeking_example.c
+++ b/iseeking_example.c
@@ -60,20 +60,22 @@ void _verify(OggVorbis_File *ov,
     exit(1);
   }
   bread=ov_read(ov,buffer,4096,&dummy);
-  for(j=0;j<bread;j++){
-    if(buffer[j]!=bigassbuffer[j+pos*4]){
-      fprintf(stderr,"data position after seek doesn't match pcm position\n");
-
-      {
-        FILE *f=fopen("a.m","w");
-        for(j=0;j<bread;j++)fprintf(f,"%d\n",(int)buffer[j]);
-        fclose(f);
-        f=fopen("b.m","w");
-        for(j=0;j<bread;j++)fprintf(f,"%d\n",(int)bigassbuffer[j+pos*2]);
-        fclose(f);
+  if(bigassbuffer){
+    for(j=0;j<bread;j++){
+      if(buffer[j]!=bigassbuffer[j+pos*4]){
+	fprintf(stderr,"data position after seek doesn't match pcm position\n");
+	
+	{
+	  FILE *f=fopen("a.m","w");
+	  for(j=0;j<bread;j++)fprintf(f,"%d\n",(int)buffer[j]);
+	  fclose(f);
+	  f=fopen("b.m","w");
+	  for(j=0;j<bread;j++)fprintf(f,"%d\n",(int)bigassbuffer[j+pos*2]);
+	  fclose(f);
+	}
+	
+	exit(1);
       }
-
-      exit(1);
     }
   }
 }
@@ -116,17 +118,21 @@ int main(){
     pcmlength=ov_pcm_total(&ov,-1);
     timelength=ov_time_total(&ov,-1);
     bigassbuffer=malloc(pcmlength*4); /* w00t */
-    i=0;
-    while(i<pcmlength*4){
-      int ret=ov_read(&ov,bigassbuffer+i,pcmlength*4-i,&dummy);
-      if(ret<0)continue;
-      if(ret){
-        i+=ret;
-      }else{
-        pcmlength=i/4;
+    if(bigassbuffer){
+      i=0;
+      while(i<pcmlength*4){
+	int ret=ov_read(&ov,bigassbuffer+i,pcmlength*4-i,&dummy);
+	if(ret<0)continue;
+	if(ret){
+	  i+=ret;
+	}else{
+	  pcmlength=i/4;
+	}
+	fprintf(stderr,"\rloading.... [%ld left]              ",
+		(long)(pcmlength*4-i));
       }
-      fprintf(stderr,"\rloading.... [%ld left]              ",
-              (long)(pcmlength*4-i));
+    }else{
+      fprintf(stderr,"\rfile too large to load into memory for read tests;\n\tonly verifying seek positioning...\n");
     }
     
     {
@@ -154,7 +160,7 @@ int main(){
              (long)pcmlength);
     
       for(i=0;i<1000;i++){
-        ogg_int64_t val=rand()*pcmlength/RAND_MAX;
+        ogg_int64_t val=(double)rand()*pcmlength/RAND_MAX;
         fprintf(stderr,"\r\t%d [pcm position %ld]...     ",i,(long)val);
         ret=ov_pcm_seek_page(&ov,val);
         if(ret<0){
@@ -173,7 +179,7 @@ int main(){
              (long)pcmlength);
     
       for(i=0;i<1000;i++){
-        ogg_int64_t val=rand()*pcmlength/RAND_MAX;
+        ogg_int64_t val=(double)rand()*pcmlength/RAND_MAX;
         fprintf(stderr,"\r\t%d [pcm position %ld]...     ",i,(long)val);
         ret=ov_pcm_seek(&ov,val);
         if(ret<0){
@@ -197,7 +203,7 @@ int main(){
               (long)timelength);
     
       for(i=0;i<1000;i++){
-        ogg_int64_t val=rand()*timelength/RAND_MAX;
+        ogg_int64_t val=(double)rand()*timelength/RAND_MAX;
         fprintf(stderr,"\r\t%d [time position %ld]...     ",i,(long)val);
         ret=ov_time_seek_page(&ov,val);
         if(ret<0){
@@ -216,7 +222,7 @@ int main(){
               (long)timelength);
     
       for(i=0;i<1000;i++){
-        ogg_int64_t val=rand()*timelength/RAND_MAX;
+        ogg_int64_t val=(double)rand()*timelength/RAND_MAX;
         fprintf(stderr,"\r\t%d [time position %ld]...     ",i,(long)val);
         ret=ov_time_seek(&ov,val);
         if(ret<0){