@@ -430,38 +430,38 @@ defimpl Enumerable, for: PgLargeObjects.LargeObject do
430430 def slice ( lob ) do
431431 case count ( lob ) do
432432 { :ok , size } ->
433- slicing_fun = fn
434- start , length , 1 ->
435- case PgLargeObjects.LargeObject . seek ( lob , start * lob . bufsize ) do
436- { :ok , _ } -> :ok
437- { :error , reason } -> raise "failed to seek in large object: #{ inspect ( reason ) } "
438- end
439-
440- for _ <- 0 .. ( length - 1 ) do
441- case PgLargeObjects.LargeObject . read ( lob , lob . bufsize ) do
442- { :ok , data } -> data
443- { :error , reason } -> raise "failed to read from large object: #{ inspect ( reason ) } "
444- end
445- end
446-
447- start , length , step ->
448- for i <- 0 .. ( length - 1 ) // step do
449- case PgLargeObjects.LargeObject . seek ( lob , ( start + i ) * lob . bufsize ) do
450- { :ok , _ } -> :ok
451- { :error , reason } -> raise "failed to seek in large object: #{ inspect ( reason ) } "
452- end
453-
454- case PgLargeObjects.LargeObject . read ( lob , lob . bufsize ) do
455- { :ok , data } -> data
456- { :error , reason } -> raise "failed to read from large object: #{ inspect ( reason ) } "
457- end
458- end
459- end
460-
461- { :ok , size , slicing_fun }
433+ { :ok , size , fn start , length , step -> slicing_fun ( lob , start , length , step ) end }
462434
463435 { :error , _ } ->
464436 { :error , __MODULE__ }
465437 end
466438 end
439+
440+ defp slicing_fun ( lob , start , length , 1 ) do
441+ case PgLargeObjects.LargeObject . seek ( lob , start * lob . bufsize ) do
442+ { :ok , _ } -> :ok
443+ { :error , reason } -> raise "failed to seek in large object: #{ inspect ( reason ) } "
444+ end
445+
446+ for _ <- 0 .. ( length - 1 ) do
447+ case PgLargeObjects.LargeObject . read ( lob , lob . bufsize ) do
448+ { :ok , data } -> data
449+ { :error , reason } -> raise "failed to read from large object: #{ inspect ( reason ) } "
450+ end
451+ end
452+ end
453+
454+ defp slicing_fun ( lob , start , length , step ) do
455+ for i <- 0 .. ( length - 1 ) // step do
456+ case PgLargeObjects.LargeObject . seek ( lob , ( start + i ) * lob . bufsize ) do
457+ { :ok , _ } -> :ok
458+ { :error , reason } -> raise "failed to seek in large object: #{ inspect ( reason ) } "
459+ end
460+
461+ case PgLargeObjects.LargeObject . read ( lob , lob . bufsize ) do
462+ { :ok , data } -> data
463+ { :error , reason } -> raise "failed to read from large object: #{ inspect ( reason ) } "
464+ end
465+ end
466+ end
467467end
0 commit comments