? COPYING
? INSTALL
? libpresent-1.pc
? patch
Index: libpresent/load-ppt.c
===================================================================
RCS file: /cvs/gnome/present/libpresent/load-ppt.c,v
retrieving revision 1.20
diff -u -r1.20 load-ppt.c
--- libpresent/load-ppt.c	21 Mar 2005 17:45:16 -0000	1.20
+++ libpresent/load-ppt.c	15 May 2005 02:03:34 -0000
@@ -562,8 +562,10 @@
 						       present_presentation_get_drawing_group (parse_user_data->presentation));
 			g_object_unref (handler);
 			if (STACK_TOP->opcode == Slide) {
-				SlideParseState *parse_state = STACK_TOP->parse_state;
-				present_slide_set_drawing (parse_state->slide,
+				SlideParseState *parse_state;
+				parse_state = stack ? STACK_TOP->parse_state : NULL;
+				if (parse_state && parse_state->slide)
+					present_slide_set_drawing (parse_state->slide,
 							   drawing);
 			}
 			g_object_unref (drawing);
Index: libpresent/present-slide.c
===================================================================
RCS file: /cvs/gnome/present/libpresent/present-slide.c,v
retrieving revision 1.5
diff -u -r1.5 present-slide.c
--- libpresent/present-slide.c	21 Mar 2005 17:45:16 -0000	1.5
+++ libpresent/present-slide.c	15 May 2005 02:03:34 -0000
@@ -75,6 +75,9 @@
 	g_return_if_fail (slide != NULL);
 	g_return_if_fail (text != NULL);
 
+	g_return_if_fail (slide->priv != NULL);
+	g_return_if_fail (slide->priv->texts != NULL);
+	
 	if (pos == -1)
 		pos = slide->priv->texts->len;
 
@@ -87,8 +90,11 @@
 present_slide_delete_text   (PresentSlide  *slide,
 			     int                   pos)
 {
-	PresentText *text = g_ptr_array_remove_index (slide->priv->texts, pos);
-	g_object_unref (text);
+	if (slide && slide->priv && slide->priv->texts)
+	{
+		PresentText *text = g_ptr_array_remove_index (slide->priv->texts, pos);
+		g_object_unref (text);
+	}
 }
 
 /* old_pos must be an actual position.  new_pos can be -1 to represent the end. */
@@ -97,50 +103,72 @@
 			     int                   old_pos,
 			     int                   new_pos)
 {
-	PresentText *text = g_ptr_array_remove_index (slide->priv->texts, old_pos);
-	present_slide_insert_text (slide, text, new_pos);
-	g_object_unref (text);
+	if (slide && slide->priv && slide->priv->texts)
+	{
+		PresentText *text = g_ptr_array_remove_index (slide->priv->texts, old_pos);
+		present_slide_insert_text (slide, text, new_pos);
+		g_object_unref (text);
+
+	}
 }
 
 int
 present_slide_get_text_count  (PresentSlide       *slide)
 {
-	return slide->priv->texts->len;
+	if (slide && slide->priv && slide->priv->texts)
+	{
+		return slide->priv->texts->len;
+
+	}
+	return -1;
 }
 
 PresentText *
 present_slide_get_text (PresentSlide  *slide,
 			int            pos)
 {
-	PresentText *text;
+	if (slide && slide->priv && slide->priv->texts)
+	{
+		PresentText *text;
 
-	g_return_val_if_fail (pos < present_slide_get_text_count (slide), NULL);
+		g_return_val_if_fail (pos < present_slide_get_text_count (slide), NULL);
 
-	text = g_ptr_array_index (slide->priv->texts, pos);
+		text = g_ptr_array_index (slide->priv->texts, pos);
 
-	g_return_val_if_fail (text, NULL);
+		g_return_val_if_fail (text, NULL);
 
-	g_object_ref (text);
-	return text;
+		g_object_ref (text);
+		return text;
+
+	}
+	return NULL;
 }
 
 GodDrawing *
 present_slide_get_drawing (PresentSlide  *slide)
 {
-	if (slide->priv->drawing)
-		g_object_ref (slide->priv->drawing);
-	return slide->priv->drawing;
+	if (slide && slide->priv)
+	{
+		if (slide->priv->drawing)
+			g_object_ref (slide->priv->drawing);
+		return slide->priv->drawing;
+	}
+	return NULL;
 }
 
 void
 present_slide_set_drawing (PresentSlide *slide,
 			   GodDrawing   *drawing)
 {
-	if (slide->priv->drawing)
-		g_object_unref (slide->priv->drawing);
-	slide->priv->drawing = drawing;
-	if (slide->priv->drawing)
-		g_object_ref (slide->priv->drawing);
+	if (slide && slide->priv)
+	{
+		if (slide->priv->drawing)
+			g_object_unref (slide->priv->drawing);
+		slide->priv->drawing = drawing;
+		if (slide->priv->drawing)
+			g_object_ref (slide->priv->drawing);
+
+	}
 }
 
 static void

